aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/shcm/shsupercm/fabric/citresewn/cit
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/shcm/shsupercm/fabric/citresewn/cit')
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/cit/CITRegistry.java26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/main/java/shcm/shsupercm/fabric/citresewn/cit/CITRegistry.java b/src/main/java/shcm/shsupercm/fabric/citresewn/cit/CITRegistry.java
index ff38ef8..47f79fe 100644
--- a/src/main/java/shcm/shsupercm/fabric/citresewn/cit/CITRegistry.java
+++ b/src/main/java/shcm/shsupercm/fabric/citresewn/cit/CITRegistry.java
@@ -20,6 +20,9 @@ public class CITRegistry {
public static final Map<Identifier, CITTypeContainer<? extends CITType>> TYPES = new HashMap<>();
public static final Map<PropertyKey, CITConditionContainer<? extends CITCondition>> CONDITIONS = new HashMap<>();
+ private static final Map<Class<? extends CITType>, Identifier> TYPE_TO_ID = new IdentityHashMap<>();
+ private static final Map<Class<? extends CITCondition>, PropertyKey> CONDITION_TO_ID = new IdentityHashMap<>();
+
public static void registerAll() {
info("Registering CIT Conditions");
for (var entrypointContainer : FabricLoader.getInstance().getEntrypointContainers(CITConditionContainer.ENTRYPOINT, CITConditionContainer.class)) {
@@ -27,8 +30,13 @@ public class CITRegistry {
if (namespace.equals("citresewn-defaults"))
namespace = "citresewn";
- for (String alias : entrypointContainer.getEntrypoint().aliases)
- CONDITIONS.put(new PropertyKey(namespace, alias), (CITConditionContainer<? extends CITCondition>) entrypointContainer.getEntrypoint());
+ for (String alias : entrypointContainer.getEntrypoint().aliases) {
+ final PropertyKey key = new PropertyKey(namespace, alias);
+ CITConditionContainer<?> container = entrypointContainer.getEntrypoint();
+
+ CONDITIONS.put(key, container);
+ CONDITION_TO_ID.putIfAbsent(container.createCondition.get().getClass(), key);
+ }
}
info("Registering CIT Types");
@@ -37,7 +45,11 @@ public class CITRegistry {
if (namespace.equals("citresewn-defaults"))
namespace = "citresewn";
- TYPES.put(new Identifier(namespace, entrypointContainer.getEntrypoint().id), (CITTypeContainer<? extends CITType>) entrypointContainer.getEntrypoint());
+ final Identifier id = new Identifier(namespace, entrypointContainer.getEntrypoint().id);
+ CITTypeContainer<?> container = entrypointContainer.getEntrypoint();
+
+ TYPES.put(id, container);
+ TYPE_TO_ID.putIfAbsent(container.createType.get().getClass(), id);
}
}
@@ -71,4 +83,12 @@ public class CITRegistry {
return typeContainer.createType.get();
}
+
+ public static Identifier idOfType(Class<? extends CITType> clazz) {
+ return TYPE_TO_ID.get(clazz);
+ }
+
+ public static PropertyKey idOfCondition(Class<? extends CITCondition> clazz) {
+ return CONDITION_TO_ID.get(clazz);
+ }
}