Added onRegister and onRemove master functions to registries

This commit is contained in:
Will FP
2024-05-11 17:42:56 +01:00
parent f71fa64ccd
commit d99121ad47

View File

@@ -62,6 +62,7 @@ public class Registry<T extends Registrable> implements Iterable<T> {
registry.put(element.getID(), element);
element.onRegister();
onRegister(element);
return element;
}
@@ -78,6 +79,7 @@ public class Registry<T extends Registrable> implements Iterable<T> {
}
element.onRemove();
onRemove(element);
registry.remove(element.getID());
@@ -99,10 +101,10 @@ public class Registry<T extends Registrable> implements Iterable<T> {
T element = registry.get(id);
if (element != null) {
element.onRemove();
return remove(element);
}
return registry.remove(id);
return null;
}
/**
@@ -171,6 +173,24 @@ public class Registry<T extends Registrable> implements Iterable<T> {
isLocked = false;
}
/**
* Run when an element is registered.
*
* @param element The element.
*/
protected void onRegister(@NotNull final T element) {
// Override this method to do something when an element is registered.
}
/**
* Run when an element is removed.
*
* @param element The element.
*/
protected void onRemove(@NotNull final T element) {
// Override this method to do something when an element is removed.
}
/**
* Get if the registry is empty.
*