Skip to content

Commit 3c94dc5

Browse files
authored
Merge pull request #26 from SLNE-Development/fix/fix-event-server-display-if-offline
Fix/fix event server display if offline
2 parents 6b7178d + 4f4c256 commit 3c94dc5

2 files changed

Lines changed: 31 additions & 7 deletions

File tree

src/main/kotlin/dev/slne/surf/lobby/PaperMain.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class PaperMain : SuspendingJavaPlugin() {
2323
override fun onEnable() {
2424
if (surfNpcHook) {
2525
SurfNpcHook.initialize()
26+
SurfNpcHook.startSyncTask()
2627
}
2728

2829
if (surfHologramHook) {
@@ -51,6 +52,10 @@ class PaperMain : SuspendingJavaPlugin() {
5152
}
5253

5354
override fun onDisable() {
55+
if (surfNpcHook) {
56+
SurfNpcHook.stopSyncTask()
57+
}
58+
5459
redisApi.disconnect()
5560
}
5661

src/main/kotlin/dev/slne/surf/lobby/hook/npc/SurfNpcHook.kt

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,13 @@ import dev.slne.surf.surfapi.core.api.font.toSmallCaps
2121
import dev.slne.surf.surfapi.core.api.messages.adventure.clickOpensUrl
2222
import dev.slne.surf.surfapi.core.api.messages.adventure.playSound
2323
import dev.slne.surf.surfapi.core.api.messages.adventure.sendText
24+
import io.papermc.paper.threadedregions.scheduler.ScheduledTask
2425
import net.kyori.adventure.text.format.TextDecoration
26+
import org.bukkit.Bukkit
2527
import org.bukkit.Sound
2628
import org.bukkit.entity.EntityType
2729
import org.bukkit.entity.Player
30+
import java.util.concurrent.TimeUnit
2831

2932
object SurfNpcHook {
3033
lateinit var survivalNpc: Npc
@@ -35,6 +38,8 @@ object SurfNpcHook {
3538
lateinit var spawnEventNpc: Npc
3639
lateinit var shopNpc: Npc
3740

41+
var eventServerDisplayName: String = "Event"
42+
3843
fun initialize() {
3944
createSurvivalNpc()
4045
createEventNpc()
@@ -89,13 +94,6 @@ object SurfNpcHook {
8994
}
9095
}
9196

92-
private val eventServerDisplayName by lazy {
93-
val server = surfCoreApi.getServerByName(lobbyConfig.eventServerName)
94-
?: error("Event server with name ${lobbyConfig.eventServerName} not found")
95-
96-
server.displayName
97-
}
98-
9997
private fun createEventNpc() {
10098
eventNpc = npc {
10199
displayName = {
@@ -278,4 +276,25 @@ object SurfNpcHook {
278276
}
279277
} ?: error("Event server with name ${lobbyConfig.eventServerName} not found")
280278
}
279+
280+
private lateinit var syncTask: ScheduledTask
281+
282+
fun startSyncTask() {
283+
syncTask = Bukkit.getAsyncScheduler().runAtFixedRate(plugin, {
284+
val server =
285+
surfCoreApi.getServerByName(lobbyConfig.eventServerName) ?: return@runAtFixedRate
286+
287+
if (eventServerDisplayName != server.displayName) {
288+
eventServerDisplayName = server.displayName
289+
290+
eventNpc.refresh()
291+
}
292+
}, 0L, 30L, TimeUnit.SECONDS)
293+
}
294+
295+
fun stopSyncTask() {
296+
if (::syncTask.isInitialized) {
297+
syncTask.cancel()
298+
}
299+
}
281300
}

0 commit comments

Comments
 (0)