File tree Expand file tree Collapse file tree 2 files changed +28
-0
lines changed
src/main/kotlin/dev/bypixel/redivelocity Expand file tree Collapse file tree 2 files changed +28
-0
lines changed Original file line number Diff line number Diff line change @@ -33,6 +33,7 @@ import dev.bypixel.redivelocity.election.ElectionScheduler
3333import dev.bypixel.redivelocity.event.*
3434import dev.bypixel.redivelocity.feature.globalPlayercount.PlayercountScheduler
3535import dev.bypixel.redivelocity.heartbeat.HeartbeatScheduler
36+ import dev.bypixel.redivelocity.pubsub.ConnectListener
3637import dev.bypixel.redivelocity.pubsub.KickListener
3738import dev.bypixel.redivelocity.pubsub.LeaderElectionListener
3839import dev.bypixel.redivelocity.pubsub.PlayercountListener
@@ -263,6 +264,7 @@ class RediVelocity @Inject constructor(val proxy: ProxyServer) {
263264 }
264265
265266 KickListener
267+ ConnectListener
266268 LeaderElectionListener
267269 PlayercountListener
268270
@@ -332,6 +334,7 @@ class RediVelocity @Inject constructor(val proxy: ProxyServer) {
332334 CommandAPI .onDisable()
333335
334336 RedisListener .unregisterListener(KickListener )
337+ RedisListener .unregisterListener(ConnectListener )
335338 RedisListener .unregisterListener(LeaderElectionListener )
336339 RedisListener .unregisterListener(PlayercountListener )
337340 ElectionScheduler .job.cancelAndJoin()
Original file line number Diff line number Diff line change 1+ package dev.bypixel.redivelocity.pubsub
2+
3+ import dev.bypixel.lettucewrapper.listener.RedisListener
4+ import dev.bypixel.redivelocity.RediVelocity
5+ import org.json.JSONObject
6+ import java.util.*
7+
8+ object ConnectListener : RedisListener(" redivelocity-connect" ) {
9+ override fun onMessage (message : String ) {
10+ val jMsg = JSONObject (message)
11+
12+ if (jMsg.has(" uuid" ) && jMsg.has(" server" )) {
13+ val uuid = UUID .fromString(jMsg.getString(" uuid" ))
14+ val server = jMsg.getString(" server" )
15+
16+ RediVelocity .instance.proxy.allPlayers.find { it.uniqueId == uuid }?.let { player ->
17+ player.createConnectionRequest(
18+ RediVelocity .instance.proxy.getServer(server).orElseThrow {
19+ IllegalArgumentException (" Server $server not found" )
20+ }
21+ )
22+ }
23+ }
24+ }
25+ }
You can’t perform that action at this time.
0 commit comments