package com.agilemods.materiamuto.common.emc.recipe; import com.agilemods.materiamuto.api.IEMCRegistry; import com.agilemods.materiamuto.api.IRecipeScanner; import com.agilemods.materiamuto.api.wrapper.VanillaStackWrapper; import com.google.common.collect.Maps; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import java.util.HashSet; import java.util.Map; import java.util.Set; public class VanillaSmeltingScanner implements IRecipeScanner { private Map<VanillaStackWrapper, Set<VanillaStackWrapper>> smeltingMap = Maps.newHashMap(); private void addRecipe(VanillaStackWrapper input, VanillaStackWrapper output) { Set<VanillaStackWrapper> set = smeltingMap.get(output); if (set == null) { set = new HashSet<VanillaStackWrapper>(); } set.add(input); smeltingMap.put(output, set); } @Override public void scan() { for (Map.Entry<ItemStack, ItemStack> entry : (Set<Map.Entry>)FurnaceRecipes.smelting().getSmeltingList().entrySet()) { addRecipe(new VanillaStackWrapper(entry.getKey()), new VanillaStackWrapper(entry.getValue())); } } public double getEMC(IEMCRegistry emcRegistry, VanillaStackWrapper vanillaStackWrapper) { double emc = Double.MAX_VALUE; Set<VanillaStackWrapper> set = smeltingMap.get(vanillaStackWrapper); if (set != null) { for (VanillaStackWrapper input : set) { double subEmc = input.getEMC(); if (subEmc > 0 && subEmc < emc) { emc = subEmc; } } } else { return 0; } return emc; } }