diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java b/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java index 1707fd6fd..e2056bcf1 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/CheckedRegistry.java @@ -7,6 +7,7 @@ package com.dfsek.terra.api.registry; +import com.dfsek.terra.api.registry.key.Keyed; import com.dfsek.terra.api.registry.key.RegistryKey; import org.jetbrains.annotations.NotNull; @@ -24,4 +25,9 @@ public interface CheckedRegistry extends Registry { * @throws DuplicateEntryException If an entry with the same identifier is already present. */ void register(@NotNull RegistryKey identifier, @NotNull T value) throws DuplicateEntryException; + + @SuppressWarnings("unchecked") + default void register(@NotNull Keyed value) throws DuplicateEntryException { + register(value.getRegistryKey(), (T) value); + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java b/common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java index ce492133e..b9488a11f 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java +++ b/common/api/src/main/java/com/dfsek/terra/api/registry/OpenRegistry.java @@ -7,6 +7,7 @@ package com.dfsek.terra.api.registry; +import com.dfsek.terra.api.registry.key.Keyed; import com.dfsek.terra.api.registry.key.RegistryKey; import org.jetbrains.annotations.NotNull; @@ -23,6 +24,11 @@ public interface OpenRegistry extends Registry { */ boolean register(@NotNull RegistryKey identifier, @NotNull T value); + @SuppressWarnings("unchecked") + default boolean register(@NotNull Keyed value) { + return register(value.getRegistryKey(), (T) value); + } + /** * Add a value to this registry, checking whether it is present first. * @@ -33,6 +39,11 @@ public interface OpenRegistry extends Registry { */ void registerChecked(@NotNull RegistryKey identifier, @NotNull T value) throws DuplicateEntryException; + @SuppressWarnings("unchecked") + default void registerChecked(@NotNull Keyed value) { + registerChecked(value.getRegistryKey(), (T) value); + } + /** * Clears all entries from the registry. */