mirror of
https://github.com/KAMKEEL/CustomNPC-Plus.git
synced 2026-11-12 16:37:45 +00:00
why...
This commit is contained in:
1 parent
540903d71f
commit
8a3b0b9866
1 file changed
+11
-32
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user