From a42ae7d0255739e07fd3de3332d81b859ac7fd35 Mon Sep 17 00:00:00 2001 From: ceikry Date: Thu, 1 Jul 2021 18:16:23 -0500 Subject: [PATCH] Add daily restart functionality --- .../src/main/kotlin/rs09/ServerConstants.kt | 7 +++++ .../kotlin/rs09/worker/MajorUpdateWorker.kt | 27 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/Server/src/main/kotlin/rs09/ServerConstants.kt b/Server/src/main/kotlin/rs09/ServerConstants.kt index a2082b60d..35c1d5c83 100644 --- a/Server/src/main/kotlin/rs09/ServerConstants.kt +++ b/Server/src/main/kotlin/rs09/ServerConstants.kt @@ -173,6 +173,9 @@ class ServerConstants { @JvmField var MODULUS = BigInteger("96982303379631821170939875058071478695026608406924780574168393250855797534862289546229721580153879336741968220328805101128831071152160922518190059946555203865621183480223212969502122536662721687753974815205744569357388338433981424032996046420057284324856368815997832596174397728134370577184183004453899764051") + @JvmField + var DAILY_RESTART = false + /** * Parses a JSONObject and retrieves the values for all settings in this file. * @author Ceikry @@ -211,6 +214,10 @@ class ServerConstants { DATABASE_PORT = data["database_port"].toString() DATABASE = Database(DATABASE_ADDRESS, DATABASE_NAME, DATABASE_USER, DATABASE_PASS) + + if(data.containsKey("daily_restart")){ + DAILY_RESTART = data["daily_restart"] as Boolean + } } } } \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/worker/MajorUpdateWorker.kt b/Server/src/main/kotlin/rs09/worker/MajorUpdateWorker.kt index 13929fd2f..05a2eea46 100644 --- a/Server/src/main/kotlin/rs09/worker/MajorUpdateWorker.kt +++ b/Server/src/main/kotlin/rs09/worker/MajorUpdateWorker.kt @@ -1,14 +1,22 @@ package rs09.worker +import api.ContentAPI +import core.game.system.SystemManager +import core.game.system.SystemState import core.game.system.task.Pulse import core.plugin.CorePluginTypes.Managers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.delay import kotlinx.coroutines.launch import rs09.Server +import rs09.ServerConstants import rs09.game.world.GameWorld import rs09.game.world.repository.Repository import rs09.game.world.update.UpdateSequence +import rs09.tools.stringtools.colorize +import java.text.SimpleDateFormat +import java.util.* +import kotlin.collections.ArrayList /** * Handles the running of pulses and writing of masks, etc @@ -17,6 +25,7 @@ import rs09.game.world.update.UpdateSequence class MajorUpdateWorker { var started = false val sequence = UpdateSequence() + val sdf = SimpleDateFormat("HH") fun start() = GlobalScope.launch { started = true while(true){ @@ -46,6 +55,24 @@ class MajorUpdateWorker { //tick all manager plugins Managers.tick() Server.heartbeat() + + //Handle daily restart if enabled + if(ServerConstants.DAILY_RESTART && sdf.format(Date()).toInt() == 0){ + Repository.sendNews(colorize("%RSERVER GOING DOWN FOR DAILY RESTART IN 5 MINUTES!")) + ServerConstants.DAILY_RESTART = false + ContentAPI.submitWorldPulse(object : Pulse(100) { + var counter = 0 + override fun pulse(): Boolean { + counter++ + if(counter == 5){ + SystemManager.flag(SystemState.TERMINATED) + return true + } + Repository.sendNews(colorize("%RSERVER GOING DOWN FOR DAILY RESTART IN ${5 - counter} MINUTE${if(counter < 4) "S" else ""}!")) + return false + } + }) + } } } } \ No newline at end of file