This commit is contained in:
Vidal committed 2026-02-12 13:48:15 -03:00
1 parent 540903d71f
commit 8a3b0b9866
1 file changed
+11 -32
+11 -32
View File
@@ -12,7 +12,7 @@ import java.util.function.Supplier;
public class Register<T> {
public static final Map<String, List<String>> REGISTERED_NAMESPACES = new LinkedHashMap<>();
public static final Map<String, String> NAMESPACE_DISPLAY_NAMES = new LinkedHashMap<>();
private final String registryKey;
protected final String registryKey;
protected final String namespace;
protected final Map<String, Supplier<T>> entries = new LinkedHashMap<>();
@@ -35,45 +35,24 @@ public class Register<T> {
return false;
}
public List<T> catalogue() {
List<T> list = new ArrayList<>();
for (String regKey : REGISTERED_NAMESPACES.keySet()) {
List<String> nameSp = REGISTERED_NAMESPACES.get(regKey);
for (String name : nameSp) {
List<T> nameSpContent = catalogue(regKey, name);
list.addAll(nameSpContent);
}
}
return list;
}
public List<T> catalogue(String namespace) {
return catalogue(registryKey, namespace);
}
public List<T> catalogue(String registryKey, String namespace) {
List<T> list = new ArrayList<>();
for (Map.Entry<String, Supplier<T>> entry : entries.entrySet()) {
if (entry.getKey().startsWith(registryKey + "." + namespace + ":"))
list.add(entry.getValue().get());
}
return list;
}
public static class Abilities extends Register<Ability> {
public static class Abilities<T extends Ability> extends Register<T> {
private Abilities(String namespace) {
super("ability", namespace);
}
@Override
public T register(String factoryName, Supplier<T> factory) {
entries.put(registryKey + "." + namespace + "." + factoryName.trim().toLowerCase().replaceAll(" ", "_"), factory);
return factory.get();
}
public void register() {
for (Map.Entry<String, Supplier<Ability>> entry : entries.entrySet()) {
for (Map.Entry<String, Supplier<T>> entry : entries.entrySet()) {
AbilityController.Instance.registerAbility(entry.getKey(), entry.getValue().get());
}
}
public static Register.Abilities create(String namespace, String displayName) {
public static <T extends Ability> Register.Abilities<T> create(String namespace, String displayName) {
if (!REGISTERED_NAMESPACES.containsKey("ability"))
REGISTERED_NAMESPACES.put("ability", new ArrayList<>());
@@ -84,7 +63,7 @@ public class Register<T> {
REGISTERED_NAMESPACES.get("ability").add(namespace);
NAMESPACE_DISPLAY_NAMES.put(namespace, displayName);
return new Register.Abilities(namespace);
return new Register.Abilities<>(namespace);
}
}