Skip to content

Commit 857ea42

Browse files
committed
Merge remote-tracking branch 'origin/master' into feature/taskflow
2 parents 0e0880e + ac62bb5 commit 857ea42

File tree

11 files changed

+37
-28
lines changed

11 files changed

+37
-28
lines changed

common/src/main/kotlin/com/lambda/command/CommandRegistry.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,19 @@ import org.reflections.Reflections
77
import org.reflections.scanners.Scanners
88
import org.reflections.util.ConfigurationBuilder
99

10+
/**
11+
* The [CommandRegistry] object is responsible for managing all [LambdaCommand] instances in the system.
12+
*/
1013
object CommandRegistry : Configurable(LambdaConfig), Loadable {
1114
override val name = "command"
1215

1316
val prefix by setting("prefix", ';')
1417
val commands = mutableSetOf<LambdaCommand>()
1518

16-
private val paths = mutableSetOf("com.lambda.command.commands")
17-
18-
fun injectPath(path: String) = paths.add(path)
19-
2019
override fun load(): String {
2120
Reflections(
2221
ConfigurationBuilder()
23-
.forPackages(*paths.toTypedArray())
22+
.forPackage("com.lambda.command.commands")
2423
.setScanners(Scanners.SubTypes)
2524
).getSubTypesOf(LambdaCommand::class.java).forEach { commandClass ->
2625
commandClass.declaredFields.find {

common/src/main/kotlin/com/lambda/config/Configurable.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,17 @@ import java.awt.Color
3131
*
3232
* @property settings A set of [AbstractSetting]s that this configurable manages.
3333
*/
34-
abstract class Configurable(configuration: Configuration) : Jsonable, Nameable {
34+
abstract class Configurable(
35+
private val configuration: Configuration
36+
) : Jsonable, Nameable {
3537
val settings = mutableSetOf<AbstractSetting<*>>()
3638

3739
init {
38-
configuration.configurables.add(this) // ToDo: Find non-leaking solution
40+
register()
3941
}
4042

43+
private fun register() = configuration.configurables.add(this)
44+
4145
override fun toJson() =
4246
JsonObject().apply {
4347
settings.forEach { setting ->

common/src/main/kotlin/com/lambda/config/Configuration.kt

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ import com.lambda.util.StringUtils.capitalize
1616
import kotlinx.coroutines.Dispatchers
1717
import kotlinx.coroutines.launch
1818
import java.io.File
19+
import java.time.Duration
20+
import kotlin.concurrent.fixedRateTimer
21+
1922

2023
/**
2124
* Represents a compound of [Configurable] objects whose [AbstractSetting]s
@@ -48,7 +51,18 @@ abstract class Configuration : Jsonable {
4851
}
4952

5053
// Avoid context-leaking warning
51-
private fun register() = configurations.add(this)
54+
private fun register() {
55+
fixedRateTimer(
56+
daemon = true,
57+
name = "Scheduler-config-${configName}",
58+
initialDelay = Duration.ofMinutes(5).toMillis(),
59+
period = Duration.ofMinutes(5).toMillis()
60+
) {
61+
trySave()
62+
}
63+
64+
configurations.add(this)
65+
}
5266

5367
override fun toJson() =
5468
JsonObject().apply {
@@ -93,17 +107,16 @@ abstract class Configuration : Jsonable {
93107
this@Configuration.info(message)
94108
}
95109
.onFailure {
96-
var message = "Failed to load ${configName.capitalize()} config, loading backup"
97-
LOG.error(message, it)
98-
this@Configuration.logError(message)
110+
var message: String
99111
runCatching { load(backup) }
100112
.onSuccess {
101113
message = "${configName.capitalize()} config loaded from backup"
102114
LOG.info(message)
103115
this@Configuration.info(message)
104116
}
105117
.onFailure { error ->
106-
message = "Failed to load ${configName.capitalize()} config from backup, unrecoverable error"
118+
message =
119+
"Failed to load ${configName.capitalize()} config from backup, unrecoverable error"
107120
LOG.error(message, error)
108121
this@Configuration.logError(message)
109122
}

common/src/main/kotlin/com/lambda/config/configurations/FriendConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ import com.lambda.config.Configuration
44
import com.lambda.util.FolderRegister
55

66
object FriendConfig : Configuration() {
7-
override val configName = "friends"
7+
override val configName get() = "friends"
88
override val primary = FolderRegister.config.resolve("$configName.json")
99
}

common/src/main/kotlin/com/lambda/config/configurations/GuiConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ import com.lambda.config.Configuration
44
import com.lambda.util.FolderRegister
55

66
object GuiConfig : Configuration() {
7-
override val configName = "gui"
7+
override val configName get() = "gui"
88
override val primary = FolderRegister.config.resolve("$configName.json")
99
}

common/src/main/kotlin/com/lambda/config/configurations/LambdaConfig.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ import com.lambda.config.Configuration
44
import com.lambda.util.FolderRegister
55

66
object LambdaConfig : Configuration() {
7-
override val configName = "lambda"
7+
override val configName get() = "lambda"
88
override val primary = FolderRegister.config.resolve("$configName.json")
9-
}
9+
}

common/src/main/kotlin/com/lambda/config/configurations/ModuleConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ import com.lambda.util.FolderRegister
1515
* @property primary The primary file where the configuration is saved.
1616
*/
1717
object ModuleConfig : Configuration() {
18-
override val configName = "modules"
18+
override val configName get() = "modules"
1919
override val primary = FolderRegister.config.resolve("$configName.json")
2020
}

common/src/main/kotlin/com/lambda/event/events/PacketEvent.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,4 @@ abstract class PacketEvent : Event {
4343
class Pre(val packet: Packet<*>) : Receive(), ICancellable by Cancellable()
4444
class Post(val packet: Packet<*>) : Receive()
4545
}
46-
}
46+
}

common/src/main/kotlin/com/lambda/module/ModuleRegistry.kt

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,23 @@
11
package com.lambda.module
22

33
import com.lambda.core.Loadable
4-
import com.lambda.module.ModuleRegistry.modules
54
import org.reflections.Reflections
65
import org.reflections.scanners.Scanners
76
import org.reflections.util.ConfigurationBuilder
87

98
/**
109
* The [ModuleRegistry] object is responsible for managing all [Module] instances in the system.
11-
*
12-
* @property modules A set of all [Module] instances in the system.
1310
*/
1411
object ModuleRegistry : Loadable {
1512
val modules = mutableSetOf<Module>()
1613

1714
val moduleNames: Set<String>
1815
get() = modules.map { it.name }.toSet()
1916

20-
private val paths = mutableSetOf("com.lambda.module.modules")
21-
22-
fun injectPath(path: String) = paths.add(path)
23-
2417
override fun load(): String {
2518
Reflections(
2619
ConfigurationBuilder()
27-
.forPackages(*paths.toTypedArray())
20+
.forPackages("com.lambda.module.modules")
2821
.addScanners(Scanners.SubTypes)
2922
).getSubTypesOf(Module::class.java).forEach { moduleClass ->
3023
moduleClass.declaredFields.find {

fabric/src/main/kotlin/com/lambda/fabric/LambdaFabric.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package com.lambda.fabric
22

3-
import net.fabricmc.api.ClientModInitializer
43
import com.lambda.Lambda
54
import com.lambda.Lambda.LOG
65
import com.lambda.Lambda.MOD_NAME
76
import com.lambda.Lambda.VERSION
7+
import net.fabricmc.api.ClientModInitializer
88

99
object LambdaFabric : ClientModInitializer {
1010
override fun onInitializeClient() {

0 commit comments

Comments
 (0)