diff --git a/eco-api/src/main/java/com/willfp/eco/core/registry/Registry.java b/eco-api/src/main/java/com/willfp/eco/core/registry/Registry.java index 0ba56490..cde1544a 100644 --- a/eco-api/src/main/java/com/willfp/eco/core/registry/Registry.java +++ b/eco-api/src/main/java/com/willfp/eco/core/registry/Registry.java @@ -62,6 +62,7 @@ public class Registry implements Iterable { registry.put(element.getID(), element); element.onRegister(); + onRegister(element); return element; } @@ -78,6 +79,7 @@ public class Registry implements Iterable { } element.onRemove(); + onRemove(element); registry.remove(element.getID()); @@ -99,10 +101,10 @@ public class Registry implements Iterable { 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 implements Iterable { 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. *