diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/config/EcoConfig.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/config/EcoConfig.kt index 67997379..5f87b02b 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/config/EcoConfig.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/config/EcoConfig.kt @@ -15,7 +15,7 @@ open class EcoConfig( private val values = ConcurrentHashMap() @Transient - var injections = mutableListOf() + var injections = ConcurrentHashMap() fun init(values: Map) { this.values.clear() @@ -104,12 +104,12 @@ open class EcoConfig( } override fun getSubsectionOrNull(path: String): Config? { - return (get(path) as? Config)?.apply { this.addInjectablePlaceholder(injections) } + return (get(path) as? Config)?.apply { this.addInjectablePlaceholder(injections.values) } } override fun getSubsectionsOrNull(path: String): List? { return getList(path) - ?.map { it.apply { this.addInjectablePlaceholder(injections) } } + ?.map { it.apply { this.addInjectablePlaceholder(injections.values) } } ?.toList() } @@ -180,12 +180,13 @@ open class EcoConfig( } override fun addInjectablePlaceholder(placeholders: Iterable) { - injections.removeIf { placeholders.any { placeholder -> it.identifier == placeholder.identifier } } - injections.addAll(placeholders) + for (placeholder in placeholders) { + injections[placeholder.identifier] = placeholder + } } override fun getPlaceholderInjections(): List { - return injections.toList() + return injections.values.toList() } override fun clearInjectedPlaceholders() { diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/config/EcoConfigSection.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/config/EcoConfigSection.kt index 82b28335..fe378231 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/config/EcoConfigSection.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/config/EcoConfigSection.kt @@ -2,14 +2,15 @@ package com.willfp.eco.internal.config import com.willfp.eco.core.config.ConfigType import com.willfp.eco.core.placeholder.InjectablePlaceholder +import java.util.concurrent.ConcurrentHashMap class EcoConfigSection( type: ConfigType, values: Map = emptyMap(), - injections: Collection = emptyList() + injections: MutableMap = mutableMapOf() ) : EcoConfig(type) { init { this.init(values) - this.injections = injections.toMutableList() + this.injections = ConcurrentHashMap(injections) } }