package moe.nea.firmament.repo import io.github.moulberry.repo.IReloadable import io.github.moulberry.repo.NEURepository import io.github.moulberry.repo.data.NEURecipe import moe.nea.firmament.util.SkyblockId class BetterRepoRecipeCache(val essenceRecipeProvider: EssenceRecipeProvider) : IReloadable { var usages: Map> = mapOf() var recipes: Map> = mapOf() override fun reload(repository: NEURepository) { val usages = mutableMapOf>() val recipes = mutableMapOf>() val baseRecipes = repository.items.items.values .asSequence() .flatMap { it.recipes } val extraRecipes = essenceRecipeProvider.recipes (baseRecipes + extraRecipes) .forEach { recipe -> recipe.allInputs.forEach { usages.getOrPut(SkyblockId(it.itemId), ::mutableSetOf).add(recipe) } recipe.allOutputs.forEach { recipes.getOrPut(SkyblockId(it.itemId), ::mutableSetOf).add(recipe) } } this.usages = usages this.recipes = recipes } }