Skip to content

Commit 0718a29

Browse files
committed
refactor: optimize gene requirements retrieval logic in GeneRequirements
1 parent fd8c2a9 commit 0718a29

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

src/main/kotlin/dev/aaronhowser/mods/geneticsresequenced/data/GeneRequirements.kt

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ import com.mojang.serialization.Codec
44
import com.mojang.serialization.codecs.RecordCodecBuilder
55
import dev.aaronhowser.mods.geneticsresequenced.GeneticsResequenced
66
import dev.aaronhowser.mods.geneticsresequenced.gene.Gene
7+
import dev.aaronhowser.mods.geneticsresequenced.gene.Gene.Companion.isGene
78
import dev.aaronhowser.mods.geneticsresequenced.registry.ModGenes
8-
import dev.aaronhowser.mods.geneticsresequenced.registry.ModGenes.getHolderOrThrow
99
import net.minecraft.core.Holder
1010
import net.minecraft.core.HolderLookup
1111
import net.minecraft.core.Registry
1212
import net.minecraft.resources.ResourceKey
1313
import net.minecraft.resources.ResourceLocation
14+
import kotlin.jvm.optionals.getOrNull
1415

1516
class GeneRequirements(
1617
val gene: ResourceKey<Gene>,
@@ -44,19 +45,18 @@ class GeneRequirements(
4445
registries: HolderLookup.Provider
4546
): Set<Holder<Gene>> {
4647
val registry = registries.lookupOrThrow(REGISTRY_KEY)
47-
val geneRk = gene.key ?: return emptySet()
48-
val geneRequirementsRk = ResourceKey.create(REGISTRY_KEY, geneRk.location())
49-
50-
val requirementsData = registry
51-
.get(geneRequirementsRk)
52-
.orElse(null)
53-
?: return emptySet()
54-
55-
return requirementsData
56-
.value()
57-
.requirements
58-
.map { it.getHolderOrThrow(registries) }
59-
.toSet()
48+
49+
val resultRks = mutableSetOf<ResourceKey<Gene>>()
50+
51+
for (grHolder in registry.listElements()) {
52+
val gr = grHolder.value()
53+
if (gene.isGene(gr.gene)) {
54+
resultRks.addAll(gr.requirements)
55+
}
56+
}
57+
58+
val geneRegistry = registries.lookupOrThrow(ModGenes.GENE_REGISTRY_KEY)
59+
return resultRks.mapNotNull { geneRegistry.get(it).getOrNull() }.toSet()
6060
}
6161
}
6262

0 commit comments

Comments
 (0)