Merge branch 'daily-restart-support' into 'master'

Add daily restart functionality

See merge request 2009scape/2009scape!81
This commit is contained in:
Ceikry
2021-07-01 23:16:51 +00:00
2 changed files with 34 additions and 0 deletions
@@ -173,6 +173,9 @@ class ServerConstants {
@JvmField @JvmField
var MODULUS = BigInteger("96982303379631821170939875058071478695026608406924780574168393250855797534862289546229721580153879336741968220328805101128831071152160922518190059946555203865621183480223212969502122536662721687753974815205744569357388338433981424032996046420057284324856368815997832596174397728134370577184183004453899764051") var MODULUS = BigInteger("96982303379631821170939875058071478695026608406924780574168393250855797534862289546229721580153879336741968220328805101128831071152160922518190059946555203865621183480223212969502122536662721687753974815205744569357388338433981424032996046420057284324856368815997832596174397728134370577184183004453899764051")
@JvmField
var DAILY_RESTART = false
/** /**
* Parses a JSONObject and retrieves the values for all settings in this file. * Parses a JSONObject and retrieves the values for all settings in this file.
* @author Ceikry * @author Ceikry
@@ -211,6 +214,10 @@ class ServerConstants {
DATABASE_PORT = data["database_port"].toString() DATABASE_PORT = data["database_port"].toString()
DATABASE = Database(DATABASE_ADDRESS, DATABASE_NAME, DATABASE_USER, DATABASE_PASS) DATABASE = Database(DATABASE_ADDRESS, DATABASE_NAME, DATABASE_USER, DATABASE_PASS)
if(data.containsKey("daily_restart")){
DAILY_RESTART = data["daily_restart"] as Boolean
}
} }
} }
} }
@@ -1,14 +1,22 @@
package rs09.worker package rs09.worker
import api.ContentAPI
import core.game.system.SystemManager
import core.game.system.SystemState
import core.game.system.task.Pulse import core.game.system.task.Pulse
import core.plugin.CorePluginTypes.Managers import core.plugin.CorePluginTypes.Managers
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import rs09.Server import rs09.Server
import rs09.ServerConstants
import rs09.game.world.GameWorld import rs09.game.world.GameWorld
import rs09.game.world.repository.Repository import rs09.game.world.repository.Repository
import rs09.game.world.update.UpdateSequence 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 * Handles the running of pulses and writing of masks, etc
@@ -17,6 +25,7 @@ import rs09.game.world.update.UpdateSequence
class MajorUpdateWorker { class MajorUpdateWorker {
var started = false var started = false
val sequence = UpdateSequence() val sequence = UpdateSequence()
val sdf = SimpleDateFormat("HH")
fun start() = GlobalScope.launch { fun start() = GlobalScope.launch {
started = true started = true
while(true){ while(true){
@@ -46,6 +55,24 @@ class MajorUpdateWorker {
//tick all manager plugins //tick all manager plugins
Managers.tick() Managers.tick()
Server.heartbeat() 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
}
})
}
} }
} }
} }