diff --git a/src/main/java/de/bixilon/minosoft/data/registries/enchantment/Enchantment.kt b/src/main/java/de/bixilon/minosoft/data/registries/enchantment/Enchantment.kt index b273c8da1..b15097038 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/enchantment/Enchantment.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/enchantment/Enchantment.kt @@ -15,6 +15,7 @@ package de.bixilon.minosoft.data.registries.enchantment import de.bixilon.minosoft.data.registries.registries.registry.RegistryItem abstract class Enchantment : RegistryItem() { + override val injectable: Boolean get() = false override fun toString(): String { return resourceLocation.full diff --git a/src/main/java/de/bixilon/minosoft/data/registries/enchantment/PixLyzerEnchantment.kt b/src/main/java/de/bixilon/minosoft/data/registries/enchantment/PixLyzerEnchantment.kt index 99e8322ba..e44835170 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/enchantment/PixLyzerEnchantment.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/enchantment/PixLyzerEnchantment.kt @@ -20,6 +20,7 @@ import de.bixilon.minosoft.data.registries.registries.registry.codec.ResourceLoc class PixLyzerEnchantment( override val resourceLocation: ResourceLocation, ) : Enchantment() { + override val injectable: Boolean get() = true companion object : ResourceLocationCodec { override fun deserialize(registries: Registries?, resourceLocation: ResourceLocation, data: Map): Enchantment { diff --git a/src/main/java/de/bixilon/minosoft/data/registries/registries/registry/RegistryItem.kt b/src/main/java/de/bixilon/minosoft/data/registries/registries/registry/RegistryItem.kt index 79107c039..8edd3342b 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/registries/registry/RegistryItem.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/registries/registry/RegistryItem.kt @@ -13,6 +13,7 @@ package de.bixilon.minosoft.data.registries.registries.registry +import de.bixilon.kutil.cast.CastUtil.unsafeNull import de.bixilon.kutil.reflection.ReflectionUtil.forceSet import de.bixilon.minosoft.data.registries.ResourceLocationAble import de.bixilon.minosoft.data.registries.registries.Registries @@ -20,9 +21,13 @@ import kotlin.reflect.KProperty import kotlin.reflect.jvm.javaField abstract class RegistryItem : ResourceLocationAble { - private val injects: MutableMap, List> = mutableMapOf() + open val injectable: Boolean get() = true + private val injects: MutableMap, List> = if (injectable) mutableMapOf() else unsafeNull() fun KProperty.inject(vararg keys: Any?) { + if (!injectable) { + throw IllegalStateException("Not injectable") + } val keyList: MutableList = mutableListOf() for (key in keys) { key ?: continue @@ -35,6 +40,9 @@ abstract class RegistryItem : ResourceLocationAble { } fun inject(registries: Registries) { + if (!injectable) { + return + } for ((field, keys) in injects) { val javaField = field.javaField ?: continue var value: Any? = null