@@ -4,13 +4,14 @@ import com.mojang.serialization.Codec
44import com.mojang.serialization.codecs.RecordCodecBuilder
55import dev.aaronhowser.mods.geneticsresequenced.GeneticsResequenced
66import dev.aaronhowser.mods.geneticsresequenced.gene.Gene
7+ import dev.aaronhowser.mods.geneticsresequenced.gene.Gene.Companion.isGene
78import dev.aaronhowser.mods.geneticsresequenced.registry.ModGenes
8- import dev.aaronhowser.mods.geneticsresequenced.registry.ModGenes.getHolderOrThrow
99import net.minecraft.core.Holder
1010import net.minecraft.core.HolderLookup
1111import net.minecraft.core.Registry
1212import net.minecraft.resources.ResourceKey
1313import net.minecraft.resources.ResourceLocation
14+ import kotlin.jvm.optionals.getOrNull
1415
1516class 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