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); registry.put(element.getID(), element);
element.onRegister(); element.onRegister();
onRegister(element);
return element; return element;
} }
@@ -78,6 +79,7 @@ public class Registry<T extends Registrable> implements Iterable<T> {
} }
element.onRemove(); element.onRemove();
onRemove(element);
registry.remove(element.getID()); registry.remove(element.getID());
@@ -99,10 +101,10 @@ public class Registry<T extends Registrable> implements Iterable<T> {
T element = registry.get(id); T element = registry.get(id);
if (element != null) { 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; 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. * Get if the registry is empty.
* *