package WayofTime.bloodmagic.api.registry; import WayofTime.bloodmagic.api.BlockStack; import WayofTime.bloodmagic.api.BloodMagicAPI; import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; public class ImperfectRitualRegistry { public static final Map enabledRituals = new HashMap(); private static final BiMap registry = HashBiMap.create(); /** * The safe way to register a new Ritual. * * @param imperfectRitual * - The imperfect ritual to register. * @param id * - The ID for the imperfect ritual. Cannot be duplicated. */ public static void registerRitual(ImperfectRitual imperfectRitual, String id) { if (imperfectRitual != null) { if (registry.containsKey(id)) BloodMagicAPI.getLogger().error("Duplicate imperfect ritual id: %s", id); else registry.put(id, imperfectRitual); } } public static void registerRitual(ImperfectRitual imperfectRitual) { registerRitual(imperfectRitual, imperfectRitual.getName()); } public static ImperfectRitual getRitualForBlock(BlockStack blockStack) { for (ImperfectRitual imperfectRitual : getRegistry().values()) if (imperfectRitual.getRequiredBlock().equals(blockStack)) return imperfectRitual; return null; } public static ImperfectRitual getRitualForId(String id) { return registry.get(id); } public static String getIdForRitual(ImperfectRitual imperfectRitual) { return registry.inverse().get(imperfectRitual); } public static boolean isMapEmpty() { return registry.isEmpty(); } public static int getMapSize() { return registry.size(); } public static boolean ritualEnabled(ImperfectRitual imperfectRitual) { try { return true; } catch (NullPointerException e) { BloodMagicAPI.getLogger().error("Invalid Imperfect Ritual was called"); return false; } } public static BiMap getRegistry() { return HashBiMap.create(registry); } public static BiMap getEnabledMap() { return HashBiMap.create(enabledRituals); } public static ArrayList getIds() { return new ArrayList(registry.keySet()); } public static ArrayList getRituals() { return new ArrayList(registry.values()); } }