From ac6a80ed8684f5651ed5345d514cf2b7b178cccf Mon Sep 17 00:00:00 2001 From: Trivernis Date: Sun, 26 Jul 2020 17:42:55 +0200 Subject: [PATCH] Add autostart config parameter (closes #78) (#84) --- README.md | 4 ++++ .../net/trivernis/chunkmaster/Chunkmaster.kt | 1 + .../lib/generation/DefaultGenerationTask.kt | 1 - .../lib/generation/GenerationManager.kt | 20 ++++++++++++++++--- .../resources/i18n/DEFAULT.i18n.properties | 3 ++- src/main/resources/i18n/de.i18n.properties | 3 ++- src/main/resources/i18n/en.i18n.properties | 3 ++- 7 files changed, 28 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 85b37fb..8258307 100644 --- a/README.md +++ b/README.md @@ -112,6 +112,10 @@ generation: # very laggy and can cause it to crash. # The value should be a posivitve integer > 1. pause-on-player-count: 1 + + # if the generation should automatically start on server startup + # the value should be a boolean + autostart: true ``` ### Spigot and Paper diff --git a/src/main/kotlin/net/trivernis/chunkmaster/Chunkmaster.kt b/src/main/kotlin/net/trivernis/chunkmaster/Chunkmaster.kt index d87b605..6d74308 100644 --- a/src/main/kotlin/net/trivernis/chunkmaster/Chunkmaster.kt +++ b/src/main/kotlin/net/trivernis/chunkmaster/Chunkmaster.kt @@ -80,6 +80,7 @@ class Chunkmaster: JavaPlugin() { config.addDefault("generation.max-loaded-chunks", 1000) config.addDefault("generation.unloading-period", 50L) config.addDefault("generation.ignore-worldborder", false) + config.addDefault("generation.autostart", true) config.addDefault("database.filename", "chunkmaster.db") config.addDefault("language", "en") config.addDefault("dynmap", true) diff --git a/src/main/kotlin/net/trivernis/chunkmaster/lib/generation/DefaultGenerationTask.kt b/src/main/kotlin/net/trivernis/chunkmaster/lib/generation/DefaultGenerationTask.kt index 4880f7a..8441755 100644 --- a/src/main/kotlin/net/trivernis/chunkmaster/lib/generation/DefaultGenerationTask.kt +++ b/src/main/kotlin/net/trivernis/chunkmaster/lib/generation/DefaultGenerationTask.kt @@ -85,7 +85,6 @@ class DefaultGenerationTask( do { lastChunkCoords = nextChunkCoordinates count = shape.count - println(count) } while (PaperLib.isChunkGenerated(world, lastChunkCoords.x, lastChunkCoords.z) && !borderReached()) } diff --git a/src/main/kotlin/net/trivernis/chunkmaster/lib/generation/GenerationManager.kt b/src/main/kotlin/net/trivernis/chunkmaster/lib/generation/GenerationManager.kt index ed18128..dbe64a6 100644 --- a/src/main/kotlin/net/trivernis/chunkmaster/lib/generation/GenerationManager.kt +++ b/src/main/kotlin/net/trivernis/chunkmaster/lib/generation/GenerationManager.kt @@ -17,7 +17,18 @@ class GenerationManager(private val chunkmaster: Chunkmaster, private val server val worldProperties = chunkmaster.sqliteManager.worldProperties private val pendingChunksTable = chunkmaster.sqliteManager.pendingChunks private val generationTasks = chunkmaster.sqliteManager.generationTasks - private val unloadingPeriod = chunkmaster.config.getLong("generation.unloading-period") + private val unloadingPeriod: Long + get() { + return chunkmaster.config.getLong("generation.unloading-period") + } + private val pauseOnPlayerCount: Int + get () { + return chunkmaster.config.getInt("generation.pause-on-player-count") + } + private val autostart: Boolean + get () { + return chunkmaster.config.getBoolean("generation.autostart") + } val loadedChunkCount: Int get() { @@ -30,7 +41,7 @@ class GenerationManager(private val chunkmaster: Chunkmaster, private val server get() { if (this.tasks.isEmpty() && this.pausedTasks.isEmpty()) { this.startAll() - if (server.onlinePlayers.size >= chunkmaster.config.getInt("generation.pause-on-player-count")) { + if (server.onlinePlayers.size >= pauseOnPlayerCount) { this.pauseAll() } } @@ -155,7 +166,10 @@ class GenerationManager(private val chunkmaster: Chunkmaster, private val server }, 600, 600) server.scheduler.runTaskLater(chunkmaster, Runnable { this.startAll() - if (!server.onlinePlayers.isEmpty()) { + if (server.onlinePlayers.count() >= pauseOnPlayerCount || !autostart) { + if (!autostart) { + chunkmaster.logger.info(chunkmaster.langManager.getLocalized("NO_AUTOSTART")) + } this.pauseAll() } }, 20) diff --git a/src/main/resources/i18n/DEFAULT.i18n.properties b/src/main/resources/i18n/DEFAULT.i18n.properties index 84c5b94..b8719ec 100644 --- a/src/main/resources/i18n/DEFAULT.i18n.properties +++ b/src/main/resources/i18n/DEFAULT.i18n.properties @@ -76,4 +76,5 @@ STATS_LOADED_CHUNKS = - §2%d§r Loaded Chunks STATS_PLUGIN_LOADED_CHUNKS = - §2%d§r Chunks Loaded by Chunkmaster SAVING_CHUNKS = Saving %d loaded chunks... -CANCEL_FAIL = Failed to cancel task #%d in the given timeout! \ No newline at end of file +CANCEL_FAIL = Failed to cancel task #%d in the given timeout! +NO_AUTOSTART = Autostart set to §2false§r. Pausing... \ No newline at end of file diff --git a/src/main/resources/i18n/de.i18n.properties b/src/main/resources/i18n/de.i18n.properties index 4aae92a..9eedf03 100644 --- a/src/main/resources/i18n/de.i18n.properties +++ b/src/main/resources/i18n/de.i18n.properties @@ -76,4 +76,5 @@ STATS_LOADED_CHUNKS = - §2%d§r Geladene Chunks STATS_PLUGIN_LOADED_CHUNKS = - §2%d§r von Chunkmaster geladene Chunks SAVING_CHUNKS = Speichere %d geladene Chunks... -CANCEL_FAIL = Konnte Aufgabe #%d nicht im angegebenen Timeout stoppen! \ No newline at end of file +CANCEL_FAIL = Konnte Aufgabe #%d nicht im angegebenen Timeout stoppen! +NO_AUTOSTART = Autostart ist auf §2false§r gesetzt. Pausiere... \ No newline at end of file diff --git a/src/main/resources/i18n/en.i18n.properties b/src/main/resources/i18n/en.i18n.properties index b381039..06a257f 100644 --- a/src/main/resources/i18n/en.i18n.properties +++ b/src/main/resources/i18n/en.i18n.properties @@ -74,4 +74,5 @@ STATS_LOADED_CHUNKS = - §2%d§r Loaded Chunks STATS_PLUGIN_LOADED_CHUNKS = - §2%d§r Chunks Loaded by Chunkmaster SAVING_CHUNKS = Saving %d loaded chunks... -CANCEL_FAIL = Failed to cancel task #%d in the given timeout! \ No newline at end of file +CANCEL_FAIL = Failed to cancel task #%d in the given timeout! +NO_AUTOSTART = Autostart set to §2false§r. Pausing... \ No newline at end of file