Fix Ritual Registry crashing with more than one registered..

This commit is contained in:
Nick 2015-11-03 07:35:14 -08:00
parent ed515f5c80
commit 68fae8c321
3 changed files with 15 additions and 10 deletions

View file

@ -5,13 +5,14 @@ import WayofTime.bloodmagic.api.BloodMagicAPI;
import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual; import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual;
import com.google.common.collect.BiMap; import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap; import com.google.common.collect.HashBiMap;
import net.minecraft.block.Block;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class ImperfectRitualRegistry { public class ImperfectRitualRegistry {
public static final BiMap<ImperfectRitual, Boolean> enabledRituals = HashBiMap.create(); public static final Map<ImperfectRitual, Boolean> enabledRituals = new HashMap<ImperfectRitual, Boolean>();
private static final BiMap<String, ImperfectRitual> registry = HashBiMap.create(); private static final BiMap<String, ImperfectRitual> registry = HashBiMap.create();
/** /**
@ -29,6 +30,10 @@ public class ImperfectRitualRegistry {
} }
} }
public static void registerRitual(ImperfectRitual imperfectRitual) {
registerRitual(imperfectRitual, imperfectRitual.getName());
}
public static ImperfectRitual getRitualForBlock(BlockStack blockStack) { public static ImperfectRitual getRitualForBlock(BlockStack blockStack) {
for (ImperfectRitual imperfectRitual : getRegistry().values()) for (ImperfectRitual imperfectRitual : getRegistry().values())
if (imperfectRitual.getRequiredBlock().equals(blockStack)) if (imperfectRitual.getRequiredBlock().equals(blockStack))

View file

@ -2,14 +2,15 @@ package WayofTime.bloodmagic.api.registry;
import WayofTime.bloodmagic.api.BloodMagicAPI; import WayofTime.bloodmagic.api.BloodMagicAPI;
import WayofTime.bloodmagic.api.ritual.Ritual; import WayofTime.bloodmagic.api.ritual.Ritual;
import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual;
import com.google.common.collect.BiMap; import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap; import com.google.common.collect.HashBiMap;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class RitualRegistry { public class RitualRegistry {
public static final BiMap<Ritual, Boolean> enabledRituals = HashBiMap.create(); public static final Map<Ritual, Boolean> enabledRituals = new HashMap<Ritual, Boolean>();
private static final BiMap<String, Ritual> registry = HashBiMap.create(); private static final BiMap<String, Ritual> registry = HashBiMap.create();
/** /**
@ -56,8 +57,8 @@ public class RitualRegistry {
return HashBiMap.create(registry); return HashBiMap.create(registry);
} }
public static BiMap<Ritual, Boolean> getEnabledMap() { public static Map<Ritual, Boolean> getEnabledMap() {
return HashBiMap.create(enabledRituals); return new HashMap<Ritual, Boolean>(enabledRituals);
} }
public static ArrayList<String> getIds() { public static ArrayList<String> getIds() {

View file

@ -4,12 +4,12 @@ import WayofTime.bloodmagic.api.registry.ImperfectRitualRegistry;
import WayofTime.bloodmagic.api.registry.RitualRegistry; import WayofTime.bloodmagic.api.registry.RitualRegistry;
import WayofTime.bloodmagic.api.ritual.Ritual; import WayofTime.bloodmagic.api.ritual.Ritual;
import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual; import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual;
import com.google.common.collect.BiMap;
import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.config.Configuration;
import sun.misc.Launcher; import sun.misc.Launcher;
import java.io.File; import java.io.File;
import java.net.URL; import java.net.URL;
import java.util.Map;
public class RitualHelper { public class RitualHelper {
@ -55,7 +55,7 @@ public class RitualHelper {
* @param category - The config category to write to. * @param category - The config category to write to.
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private static void checkRituals(Configuration config, String packageName, String category, Class ritualClass, BiMap enabledMap) { private static void checkRituals(Configuration config, String packageName, String category, Class ritualClass, Map enabledMap) {
String name = packageName; String name = packageName;
if (!name.startsWith("/")) if (!name.startsWith("/"))
name = "/" + name; name = "/" + name;
@ -75,8 +75,7 @@ public class RitualHelper {
Object o = Class.forName(packageName + "." + className).newInstance(); Object o = Class.forName(packageName + "." + className).newInstance();
if (ritualClass.isInstance(o)) if (ritualClass.isInstance(o))
enabledMap.put(ritualClass.cast(o), enabledMap.put(ritualClass.cast(o), config.get(category, className, true).getBoolean());
config.get(category, className, true).getBoolean());
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
e.printStackTrace(); e.printStackTrace();