From 93ddf5994fefde34c9f86c27d6dc9b078fa8db68 Mon Sep 17 00:00:00 2001 From: TONY_All Date: Sun, 19 Mar 2023 12:56:58 +0800 Subject: [PATCH] sync with remote --- README.md | 16 ++-- api/build.gradle.kts | 8 ++ .../cc/maxmc/msm/api/MultiServerManAPI.java | 9 +- .../java/cc/maxmc/msm/api/misc/EnumAPI.kt | 8 ++ .../cc/maxmc/msm/api/misc/ServerInfo.java | 5 ++ build.gradle.kts | 31 ++++++- {child-side => child}/build.gradle.kts | 3 +- .../cc/maxmc/msm/child/MultiServerMan.kt | 0 .../kotlin/cc/maxmc/msm/child/api/APIImpl.kt | 27 ++++++ .../kotlin/cc/maxmc/msm/child/command/Send.kt | 0 .../cc/maxmc/msm/child/netty/NetClient.kt | 3 +- .../cc/maxmc/msm/child/settings/Settings.kt | 0 .../msm/child/settings/SettingsReader.kt | 0 .../src/main/resources/bungee.yml | 0 .../src/main/resources/settings.yml | 0 common/build.gradle.kts | 1 + .../common/network/packet/PPacketAPICall.kt | 84 +++++++++++++++++++ .../msm/common/network/packet/PPacketDebug.kt | 3 +- .../kotlin/cc/maxmc/msm/common/utils/Netty.kt | 17 ++++ {parent-side => parent}/build.gradle.kts | 1 - .../cc/maxmc/msm/parent/MultiServerMan.kt | 0 .../msm/parent/listener/PacketListener.kt | 0 .../maxmc/msm/parent/manager/ChildManager.kt | 0 .../cc/maxmc/msm/parent/misc/ChildBungee.kt | 0 .../cc/maxmc/msm/parent/netty/NetManager.kt | 0 .../cc/maxmc/msm/parent/settings/Settings.kt | 0 .../msm/parent/settings/SettingsReader.kt | 0 .../src/main/resources/bungee.yml | 0 .../src/main/resources/settings.yml | 0 settings.gradle.kts | 5 +- 30 files changed, 201 insertions(+), 20 deletions(-) create mode 100644 api/src/main/java/cc/maxmc/msm/api/misc/EnumAPI.kt rename {child-side => child}/build.gradle.kts (82%) rename {child-side => child}/src/main/kotlin/cc/maxmc/msm/child/MultiServerMan.kt (100%) create mode 100644 child/src/main/kotlin/cc/maxmc/msm/child/api/APIImpl.kt rename {child-side => child}/src/main/kotlin/cc/maxmc/msm/child/command/Send.kt (100%) rename {child-side => child}/src/main/kotlin/cc/maxmc/msm/child/netty/NetClient.kt (95%) rename {child-side => child}/src/main/kotlin/cc/maxmc/msm/child/settings/Settings.kt (100%) rename {child-side => child}/src/main/kotlin/cc/maxmc/msm/child/settings/SettingsReader.kt (100%) rename {child-side => child}/src/main/resources/bungee.yml (100%) rename {child-side => child}/src/main/resources/settings.yml (100%) create mode 100644 common/src/main/kotlin/cc/maxmc/msm/common/network/packet/PPacketAPICall.kt rename {parent-side => parent}/build.gradle.kts (93%) rename {parent-side => parent}/src/main/kotlin/cc/maxmc/msm/parent/MultiServerMan.kt (100%) rename {parent-side => parent}/src/main/kotlin/cc/maxmc/msm/parent/listener/PacketListener.kt (100%) rename {parent-side => parent}/src/main/kotlin/cc/maxmc/msm/parent/manager/ChildManager.kt (100%) rename {parent-side => parent}/src/main/kotlin/cc/maxmc/msm/parent/misc/ChildBungee.kt (100%) rename {parent-side => parent}/src/main/kotlin/cc/maxmc/msm/parent/netty/NetManager.kt (100%) rename {parent-side => parent}/src/main/kotlin/cc/maxmc/msm/parent/settings/Settings.kt (100%) rename {parent-side => parent}/src/main/kotlin/cc/maxmc/msm/parent/settings/SettingsReader.kt (100%) rename {parent-side => parent}/src/main/resources/bungee.yml (100%) rename {parent-side => parent}/src/main/resources/settings.yml (100%) diff --git a/README.md b/README.md index 0eaeb3f..49b0bf2 100644 --- a/README.md +++ b/README.md @@ -38,8 +38,8 @@ - Int类型的对局id - 参数列表: - - `(List players)` - - + - `List players` + - `String type` ### `func informEnd()` @@ -48,7 +48,7 @@ - 返回值:无 - 参数列表: - - `(int id)` + - `int id` ### `func getPlayerServer()` @@ -59,7 +59,7 @@ - Int 类型的对局id,未在对局中返回-1 - 参数列表: - - `(Player player)` + - `Player player` ### `func containPlayer()` @@ -67,15 +67,15 @@ - 返回值: - bool - 参数列表: - - `(Player player)` + - `Player player` ## 数据库结构 - `match` -| id(int) | start(datetime) | end(datetime) | players(text) | -| ------- | --------------- | ------------- | ------------------------------------ | -| 1 | 1678554776 | 1678554784 | TONY_All,Sanseyooyea,PlayerA,PlayerB | +| id(int) | start(datetime) | end(datetime) | players(text) | type(varchar) | +| ------- | --------------- | ------------- | ------------------------------------ | ------------- | +| 1 | 1678554776 | 1678554784 | TONY_All,Sanseyooyea,PlayerA,PlayerB | bedwars | ## API 使用 依赖: diff --git a/api/build.gradle.kts b/api/build.gradle.kts index d9a081c..25bf224 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -13,4 +13,12 @@ dependencies { implementation(kotlin("stdlib")) @Suppress("VulnerableLibrariesLocal") compileOnly("io.github.waterfallmc:waterfall-api:1.19-R0.1-SNAPSHOT") +} + +publishing { + publications { + val release by getting(MavenPublication::class) { + artifact(tasks.jar) + } + } } \ No newline at end of file diff --git a/api/src/main/java/cc/maxmc/msm/api/MultiServerManAPI.java b/api/src/main/java/cc/maxmc/msm/api/MultiServerManAPI.java index add290c..0ff3117 100644 --- a/api/src/main/java/cc/maxmc/msm/api/MultiServerManAPI.java +++ b/api/src/main/java/cc/maxmc/msm/api/MultiServerManAPI.java @@ -2,17 +2,20 @@ package cc.maxmc.msm.api; import cc.maxmc.msm.api.misc.ServerInfo; import net.md_5.bungee.api.connection.ProxiedPlayer; +import org.jetbrains.annotations.NotNull; import java.util.List; @SuppressWarnings("unused") // API public interface MultiServerManAPI { - ServerInfo getServer(String type, List players); + @NotNull + ServerInfo getServer(@NotNull String type, @NotNull List players); void informEnd(int id); - ServerInfo getPlayerServer(ProxiedPlayer player); + @NotNull + ServerInfo getPlayerServer(@NotNull ProxiedPlayer player); - Boolean containPlayer(ProxiedPlayer player); + Boolean containPlayer(@NotNull ProxiedPlayer player); } diff --git a/api/src/main/java/cc/maxmc/msm/api/misc/EnumAPI.kt b/api/src/main/java/cc/maxmc/msm/api/misc/EnumAPI.kt new file mode 100644 index 0000000..028cac8 --- /dev/null +++ b/api/src/main/java/cc/maxmc/msm/api/misc/EnumAPI.kt @@ -0,0 +1,8 @@ +package cc.maxmc.msm.api.misc + +enum class EnumAPI { + GET_SERVER, + INFORM_END, + GET_PLAYER_SERVER, + CONTAIN_PLAYER; +} \ No newline at end of file diff --git a/api/src/main/java/cc/maxmc/msm/api/misc/ServerInfo.java b/api/src/main/java/cc/maxmc/msm/api/misc/ServerInfo.java index 774a404..8ab4429 100644 --- a/api/src/main/java/cc/maxmc/msm/api/misc/ServerInfo.java +++ b/api/src/main/java/cc/maxmc/msm/api/misc/ServerInfo.java @@ -9,6 +9,11 @@ public class ServerInfo { private final HostAndPort server; private final int id; + public ServerInfo() { + server = HostAndPort.fromString("127.0.0.1"); + id = -1; + } + public ServerInfo(@Nullable HostAndPort server, int id) { this.server = server; this.id = id; diff --git a/build.gradle.kts b/build.gradle.kts index 4be53d7..6969fe4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,2 +1,31 @@ +plugins { + `maven-publish` +} + group = "cc.maxmc.msm" -version = "1.0-SNAPSHOT" \ No newline at end of file +version = "1.0" + + +subprojects { + apply(plugin = "maven-publish") + if (name == "common") { + return@subprojects + } + + publishing { + repositories { + maven("https://repo.vip.maxmc.cc:30443/releases") { + name = "mrepo" + credentials(PasswordCredentials::class) + } + } + + publications { + create("release") { + version = rootProject.version.toString() + artifactId = "${rootProject.name}-${project.name}" + println(project.name) + } + } + } +} \ No newline at end of file diff --git a/child-side/build.gradle.kts b/child/build.gradle.kts similarity index 82% rename from child-side/build.gradle.kts rename to child/build.gradle.kts index 2cc32fd..8332c4c 100644 --- a/child-side/build.gradle.kts +++ b/child/build.gradle.kts @@ -12,7 +12,7 @@ repositories { dependencies { implementation(kotlin("stdlib")) - implementation(project(":api")) + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.0-Beta") implementation(project(":common")) implementation("io.netty:netty-all:4.1.90.Final") @Suppress("VulnerableLibrariesLocal") @@ -20,6 +20,7 @@ dependencies { } tasks.shadowJar { + archiveClassifier.set(null as? String?) relocate("kotlin", "cc.maxmc.msm.lib.kotlin") } diff --git a/child-side/src/main/kotlin/cc/maxmc/msm/child/MultiServerMan.kt b/child/src/main/kotlin/cc/maxmc/msm/child/MultiServerMan.kt similarity index 100% rename from child-side/src/main/kotlin/cc/maxmc/msm/child/MultiServerMan.kt rename to child/src/main/kotlin/cc/maxmc/msm/child/MultiServerMan.kt 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 new file mode 100644 index 0000000..a682309 --- /dev/null +++ b/child/src/main/kotlin/cc/maxmc/msm/child/api/APIImpl.kt @@ -0,0 +1,27 @@ +package cc.maxmc.msm.child.api + +import cc.maxmc.msm.api.MultiServerManAPI +import cc.maxmc.msm.api.misc.ServerInfo +import net.md_5.bungee.api.connection.ProxiedPlayer +import java.util.UUID +import java.util.concurrent.Future + +object APIImpl: MultiServerManAPI { + val apiCallCache = HashMap>() + + override fun getServer(type: String, players: MutableList): ServerInfo { + TODO("Not yet implemented") + } + + override fun informEnd(id: Int) { + TODO("Not yet implemented") + } + + override fun getPlayerServer(player: ProxiedPlayer): ServerInfo { + TODO("Not yet implemented") + } + + override fun containPlayer(player: ProxiedPlayer): Boolean { + TODO("Not yet implemented") + } +} \ No newline at end of file diff --git a/child-side/src/main/kotlin/cc/maxmc/msm/child/command/Send.kt b/child/src/main/kotlin/cc/maxmc/msm/child/command/Send.kt similarity index 100% rename from child-side/src/main/kotlin/cc/maxmc/msm/child/command/Send.kt rename to child/src/main/kotlin/cc/maxmc/msm/child/command/Send.kt diff --git a/child-side/src/main/kotlin/cc/maxmc/msm/child/netty/NetClient.kt b/child/src/main/kotlin/cc/maxmc/msm/child/netty/NetClient.kt similarity index 95% rename from child-side/src/main/kotlin/cc/maxmc/msm/child/netty/NetClient.kt rename to child/src/main/kotlin/cc/maxmc/msm/child/netty/NetClient.kt index 9641ac7..b79d1a3 100644 --- a/child-side/src/main/kotlin/cc/maxmc/msm/child/netty/NetClient.kt +++ b/child/src/main/kotlin/cc/maxmc/msm/child/netty/NetClient.kt @@ -12,8 +12,7 @@ import io.netty.channel.socket.nio.NioSocketChannel object NetClient { private val loop = NioEventLoopGroup() - lateinit var channel: Channel - private set + private lateinit var channel: Channel fun start(address: String, port: Int) { val future = Bootstrap() diff --git a/child-side/src/main/kotlin/cc/maxmc/msm/child/settings/Settings.kt b/child/src/main/kotlin/cc/maxmc/msm/child/settings/Settings.kt similarity index 100% rename from child-side/src/main/kotlin/cc/maxmc/msm/child/settings/Settings.kt rename to child/src/main/kotlin/cc/maxmc/msm/child/settings/Settings.kt diff --git a/child-side/src/main/kotlin/cc/maxmc/msm/child/settings/SettingsReader.kt b/child/src/main/kotlin/cc/maxmc/msm/child/settings/SettingsReader.kt similarity index 100% rename from child-side/src/main/kotlin/cc/maxmc/msm/child/settings/SettingsReader.kt rename to child/src/main/kotlin/cc/maxmc/msm/child/settings/SettingsReader.kt diff --git a/child-side/src/main/resources/bungee.yml b/child/src/main/resources/bungee.yml similarity index 100% rename from child-side/src/main/resources/bungee.yml rename to child/src/main/resources/bungee.yml diff --git a/child-side/src/main/resources/settings.yml b/child/src/main/resources/settings.yml similarity index 100% rename from child-side/src/main/resources/settings.yml rename to child/src/main/resources/settings.yml diff --git a/common/build.gradle.kts b/common/build.gradle.kts index d545f78..0a80aa2 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -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") 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 new file mode 100644 index 0000000..70b2068 --- /dev/null +++ b/common/src/main/kotlin/cc/maxmc/msm/common/network/packet/PPacketAPICall.kt @@ -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 = 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) + } + } +} + + diff --git a/common/src/main/kotlin/cc/maxmc/msm/common/network/packet/PPacketDebug.kt b/common/src/main/kotlin/cc/maxmc/msm/common/network/packet/PPacketDebug.kt index d5d2268..3bcb5b8 100644 --- a/common/src/main/kotlin/cc/maxmc/msm/common/network/packet/PPacketDebug.kt +++ b/common/src/main/kotlin/cc/maxmc/msm/common/network/packet/PPacketDebug.kt @@ -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") diff --git a/common/src/main/kotlin/cc/maxmc/msm/common/utils/Netty.kt b/common/src/main/kotlin/cc/maxmc/msm/common/utils/Netty.kt index 32c6dde..db4c360 100644 --- a/common/src/main/kotlin/cc/maxmc/msm/common/utils/Netty.kt +++ b/common/src/main/kotlin/cc/maxmc/msm/common/utils/Netty.kt @@ -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