mirror of
https://github.com/GayPizzaSpecifications/foundation.git
synced 2025-08-03 05:30:55 +00:00
Initial work on multi-server bridge from a while back.
This commit is contained in:
@ -1,6 +1,6 @@
|
|||||||
plugins {
|
plugins {
|
||||||
`kotlin-dsl`
|
`kotlin-dsl`
|
||||||
kotlin("plugin.serialization") version "1.5.31"
|
kotlin("plugin.serialization") version "1.6.21"
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
@ -8,10 +8,10 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10")
|
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21")
|
||||||
implementation("org.jetbrains.kotlin:kotlin-serialization:1.6.10")
|
implementation("org.jetbrains.kotlin:kotlin-serialization:1.6.21")
|
||||||
implementation("gradle.plugin.com.github.johnrengelman:shadow:7.1.1")
|
implementation("gradle.plugin.com.github.johnrengelman:shadow:7.1.2")
|
||||||
implementation("com.google.code.gson:gson:2.8.9")
|
implementation("com.google.code.gson:gson:2.9.0")
|
||||||
implementation("org.bouncycastle:bcprov-jdk15on:1.70")
|
implementation("org.bouncycastle:bcprov-jdk15on:1.70")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ dependencies {
|
|||||||
implementation("net.dv8tion:JDA:5.0.0-alpha.2") {
|
implementation("net.dv8tion:JDA:5.0.0-alpha.2") {
|
||||||
exclude(module = "opus-java")
|
exclude(module = "opus-java")
|
||||||
}
|
}
|
||||||
|
implementation("com.rabbitmq:amqp-client:5.14.2")
|
||||||
|
|
||||||
compileOnly(project(":foundation-core"))
|
compileOnly(project(":foundation-core"))
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,11 @@
|
|||||||
|
package cloud.kubelet.foundation.bifrost
|
||||||
|
|
||||||
|
import io.papermc.paper.event.player.AsyncChatEvent
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent
|
||||||
|
|
||||||
|
interface EventHandler {
|
||||||
|
fun onPlayerJoin(e: PlayerJoinEvent)
|
||||||
|
fun onPlayerQuit(e: PlayerQuitEvent)
|
||||||
|
fun onChat(e: AsyncChatEvent)
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package cloud.kubelet.foundation.bifrost
|
||||||
|
|
||||||
|
import cloud.kubelet.foundation.bifrost.model.BifrostMessageQueueConfig
|
||||||
|
import cloud.kubelet.foundation.bifrost.model.BifrostMultiConfig
|
||||||
|
import com.rabbitmq.client.Connection
|
||||||
|
import com.rabbitmq.client.ConnectionFactory
|
||||||
|
import io.papermc.paper.event.player.AsyncChatEvent
|
||||||
|
|
||||||
|
class MultiServerEventHandler(config: BifrostMultiConfig) : EventHandler {
|
||||||
|
private val bus = buildConnection(config.messageQueue)
|
||||||
|
private val channel = bus.createChannel()
|
||||||
|
|
||||||
|
init {
|
||||||
|
channel.queueDeclare(config.messageQueue.queueName, false, false, false, emptyMap())
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onChat(e: AsyncChatEvent) {
|
||||||
|
}
|
||||||
|
|
||||||
|
private companion object {
|
||||||
|
fun buildConnection(config: BifrostMessageQueueConfig): Connection = ConnectionFactory().apply {
|
||||||
|
host = config.host
|
||||||
|
port = config.port
|
||||||
|
}.newConnection()
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package cloud.kubelet.foundation.bifrost.model
|
||||||
|
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class BifrostMultiConfig(
|
||||||
|
val messageQueue: BifrostMessageQueueConfig,
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class BifrostMessageQueueConfig(
|
||||||
|
val host: String = "localhost",
|
||||||
|
val port: Int = 5672,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of the RabbitMQ queue
|
||||||
|
*/
|
||||||
|
val queueName: String = "bifrost",
|
||||||
|
)
|
5
foundation-bifrost/src/main/resources/bifrost-multi.yaml
Normal file
5
foundation-bifrost/src/main/resources/bifrost-multi.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Configuration for the Bifrost multi-server chat bridge.
|
||||||
|
|
||||||
|
messageQueue:
|
||||||
|
host: localhost
|
||||||
|
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,5 +1,5 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
Reference in New Issue
Block a user