2015-11-02 12:39:44 -08:00
|
|
|
package WayofTime.bloodmagic.api.registry;
|
2015-10-31 17:58:47 -07:00
|
|
|
|
2016-02-25 08:54:18 -05:00
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.Map;
|
|
|
|
|
2015-11-02 17:45:11 -08:00
|
|
|
import WayofTime.bloodmagic.api.BlockStack;
|
2015-11-02 12:39:44 -08:00
|
|
|
import WayofTime.bloodmagic.api.BloodMagicAPI;
|
|
|
|
import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual;
|
2016-02-25 08:54:18 -05:00
|
|
|
|
2015-10-31 17:58:47 -07:00
|
|
|
import com.google.common.collect.BiMap;
|
|
|
|
import com.google.common.collect.HashBiMap;
|
|
|
|
|
2015-12-30 15:34:40 -05:00
|
|
|
public class ImperfectRitualRegistry
|
|
|
|
{
|
2015-11-03 07:35:14 -08:00
|
|
|
public static final Map<ImperfectRitual, Boolean> enabledRituals = new HashMap<ImperfectRitual, Boolean>();
|
2015-10-31 17:58:47 -07:00
|
|
|
private static final BiMap<String, ImperfectRitual> registry = HashBiMap.create();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The safe way to register a new Ritual.
|
2015-12-30 15:34:40 -05:00
|
|
|
*
|
|
|
|
* @param imperfectRitual
|
2016-01-02 17:56:37 -05:00
|
|
|
* - The imperfect ritual to register.
|
2015-12-30 15:34:40 -05:00
|
|
|
* @param id
|
2016-01-02 17:56:37 -05:00
|
|
|
* - The ID for the imperfect ritual. Cannot be duplicated.
|
2015-10-31 17:58:47 -07:00
|
|
|
*/
|
2016-02-01 17:05:39 -08:00
|
|
|
public static void registerRitual(ImperfectRitual imperfectRitual, String id, boolean enabled)
|
2015-12-30 15:34:40 -05:00
|
|
|
{
|
|
|
|
if (imperfectRitual != null)
|
|
|
|
{
|
2015-10-31 17:58:47 -07:00
|
|
|
if (registry.containsKey(id))
|
2015-12-23 09:41:59 -08:00
|
|
|
BloodMagicAPI.getLogger().error("Duplicate imperfect ritual id: %s", id);
|
2015-10-31 17:58:47 -07:00
|
|
|
else
|
2016-02-01 17:05:39 -08:00
|
|
|
{
|
2015-10-31 17:58:47 -07:00
|
|
|
registry.put(id, imperfectRitual);
|
2016-02-01 17:05:39 -08:00
|
|
|
enabledRituals.put(imperfectRitual, enabled);
|
|
|
|
}
|
2015-10-31 17:58:47 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-02-01 17:05:39 -08:00
|
|
|
public static void registerRitual(ImperfectRitual imperfectRitual, String id)
|
|
|
|
{
|
|
|
|
registerRitual(imperfectRitual, id, true);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void registerRitual(ImperfectRitual imperfectRitual, boolean enabled)
|
|
|
|
{
|
|
|
|
registerRitual(imperfectRitual, imperfectRitual.getName(), enabled);
|
|
|
|
}
|
|
|
|
|
2015-12-30 15:34:40 -05:00
|
|
|
public static void registerRitual(ImperfectRitual imperfectRitual)
|
|
|
|
{
|
2015-11-03 07:35:14 -08:00
|
|
|
registerRitual(imperfectRitual, imperfectRitual.getName());
|
|
|
|
}
|
|
|
|
|
2015-12-30 15:34:40 -05:00
|
|
|
public static ImperfectRitual getRitualForBlock(BlockStack blockStack)
|
|
|
|
{
|
2015-11-02 19:18:53 -08:00
|
|
|
for (ImperfectRitual imperfectRitual : getRegistry().values())
|
|
|
|
if (imperfectRitual.getRequiredBlock().equals(blockStack))
|
2015-11-02 17:45:11 -08:00
|
|
|
return imperfectRitual;
|
|
|
|
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2015-12-30 15:34:40 -05:00
|
|
|
public static ImperfectRitual getRitualForId(String id)
|
|
|
|
{
|
2015-10-31 17:58:47 -07:00
|
|
|
return registry.get(id);
|
|
|
|
}
|
|
|
|
|
2015-12-30 15:34:40 -05:00
|
|
|
public static String getIdForRitual(ImperfectRitual imperfectRitual)
|
|
|
|
{
|
2015-10-31 17:58:47 -07:00
|
|
|
return registry.inverse().get(imperfectRitual);
|
|
|
|
}
|
|
|
|
|
2015-12-30 15:34:40 -05:00
|
|
|
public static boolean isMapEmpty()
|
|
|
|
{
|
2015-10-31 17:58:47 -07:00
|
|
|
return registry.isEmpty();
|
|
|
|
}
|
|
|
|
|
2015-12-30 15:34:40 -05:00
|
|
|
public static int getMapSize()
|
|
|
|
{
|
2015-10-31 17:58:47 -07:00
|
|
|
return registry.size();
|
|
|
|
}
|
|
|
|
|
2015-12-30 15:34:40 -05:00
|
|
|
public static boolean ritualEnabled(ImperfectRitual imperfectRitual)
|
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
2016-02-01 17:05:39 -08:00
|
|
|
return enabledRituals.get(imperfectRitual);
|
2015-12-30 15:34:40 -05:00
|
|
|
} catch (NullPointerException e)
|
|
|
|
{
|
2015-11-02 17:45:11 -08:00
|
|
|
BloodMagicAPI.getLogger().error("Invalid Imperfect Ritual was called");
|
|
|
|
return false;
|
|
|
|
}
|
2015-10-31 17:58:47 -07:00
|
|
|
}
|
|
|
|
|
2016-02-01 17:05:39 -08:00
|
|
|
public static boolean ritualEnabled(String id) {
|
|
|
|
return ritualEnabled(getRitualForId(id));
|
|
|
|
}
|
|
|
|
|
2015-12-30 15:34:40 -05:00
|
|
|
public static BiMap<String, ImperfectRitual> getRegistry()
|
|
|
|
{
|
2015-10-31 17:58:47 -07:00
|
|
|
return HashBiMap.create(registry);
|
|
|
|
}
|
|
|
|
|
2015-12-30 15:34:40 -05:00
|
|
|
public static BiMap<ImperfectRitual, Boolean> getEnabledMap()
|
|
|
|
{
|
2015-11-02 17:45:11 -08:00
|
|
|
return HashBiMap.create(enabledRituals);
|
|
|
|
}
|
|
|
|
|
2015-12-30 15:34:40 -05:00
|
|
|
public static ArrayList<String> getIds()
|
|
|
|
{
|
2015-10-31 17:58:47 -07:00
|
|
|
return new ArrayList<String>(registry.keySet());
|
|
|
|
}
|
|
|
|
|
2015-12-30 15:34:40 -05:00
|
|
|
public static ArrayList<ImperfectRitual> getRituals()
|
|
|
|
{
|
2015-10-31 17:58:47 -07:00
|
|
|
return new ArrayList<ImperfectRitual>(registry.values());
|
|
|
|
}
|
|
|
|
}
|