Interface Registry<T>

Type Parameters:
T - The type

@DoNotStore public interface Registry<T>
A store of registry entries with a well defined type.
  • Method Details

    • type

      RegistryType<T> type()
      Gets the key identifying this registry.
      Returns:
      The key
    • valueKey

      ResourceKey valueKey(T value)
      Gets the key for a particular value.

      Great care needs to be made in calling this method with any uncertainty as to if the key will exist. Should the value lack a key, a IllegalStateException will be thrown. Therefore, it is advised to call findValueKey(Object) instead.

      Parameters:
      value - The value
      Returns:
      The key
    • findValueKey

      Optional<ResourceKey> findValueKey(T value)
      Gets the key for a particular value, if found.

      The value must be registered within to be retrieved by key.

      Parameters:
      value - The value
      Returns:
      The key or Optional.empty()
    • findEntry

      <V extends T> Optional<RegistryEntry<V>> findEntry(ResourceKey key)
      Gets the entry for a particular key, if found.

      The value must be registered within to be retrieved by key.

      Parameters:
      key - The key
      Returns:
      The entry or Optional.empty()
    • findEntry

      default <V extends T> Optional<RegistryEntry<V>> findEntry(RegistryKey<T> key)
      findEntry(ResourceKey), provided for convenience when using RegistryKey.
      Parameters:
      key - The key
      Returns:
      The entry or Optional.empty()
    • findValue

      <V extends T> Optional<V> findValue(ResourceKey key)
      Gets the value for a particular key, if found.
      Parameters:
      key - The key
      Returns:
      The value or Optional.empty()
    • findValue

      default <V extends T> Optional<V> findValue(RegistryKey<T> key)
      findValue(ResourceKey), provided for convenience when using RegistryKey.
      Parameters:
      key - The key
      Returns:
      The value or Optional.empty()
    • value

      <V extends T> V value(ResourceKey key)
      Gets the value for a particular key.

      Great care needs to be made in calling this method with any uncertainty as to if the key will exist. Should this key lack a value, a ValueNotFoundException will be thrown. Therefore, it is advised to call findValue(ResourceKey) or findValue(RegistryKey) instead.

      Parameters:
      key - The key
      Returns:
      The value
    • taggedValues

      <V extends T> Set<V> taggedValues(Tag<T> tag)
      Returns the registered types associated with given tag.
      Parameters:
      tag - The tag
      Returns:
      The registered types associated with given tag
    • tags

      <V extends T> Stream<Tag<V>> tags()
      Gets the tags associated with this registry.
      Returns:
      The tags associated with this registry
    • value

      default <V extends T> V value(RegistryKey<T> key)
      value(ResourceKey), provided for convenience when using RegistryKey.
      Parameters:
      key - The key
      Returns:
      The value
    • streamEntries

      Stream<RegistryEntry<T>> streamEntries()
      Gets a Stream of all entries within.
      Returns:
      The stream
    • stream

      Stream<T> stream()
      Gets a Stream of all registry values within.
      Returns:
      The stream
    • isDynamic

      boolean isDynamic()
      Returns if this registry supports adding additional values.
      Returns:
      True if the registry can add additional values
    • register

      <V extends T> Optional<RegistryEntry<V>> register(ResourceKey key, V value)
      Registers a new value to this registry.

      If this registry is not dynamic or the provided key is already registered, Optional.empty() is returned instead.

      Parameters:
      key - The key
      value - The value
      Returns:
      The newly added entry, Optional.empty() otherwise