Class DeferredRegistry<T extends org.bukkit.Keyed>
java.lang.Object
net.mathias2246.buildmc.util.DeferredRegistry<T>
- All Implemented Interfaces:
Iterable<T>,org.bukkit.Registry<T>
public class DeferredRegistry<T extends org.bukkit.Keyed>
extends Object
implements org.bukkit.Registry<T>
A
DeferredRegistry is an implementation of bukkits Registry interface.
A DeferredRegistry allows you to change the contents of the registry while un-initialized.
After initializing using initialize();, the register will be made read-only for safety.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.bukkit.Registry
org.bukkit.Registry.SimpleRegistry<T extends Enum<T> & org.bukkit.Keyed> -
Field Summary
Fields inherited from interface org.bukkit.Registry
ADVANCEMENT, ART, ATTRIBUTE, BANNER_PATTERN, BIOME, BLOCK, BOSS_BARS, CAT_VARIANT, CHICKEN_VARIANT, COW_VARIANT, DAMAGE_TYPE, EFFECT, ENCHANTMENT, ENTITY_TYPE, FLUID, FROG_VARIANT, GAME_EVENT, INSTRUMENT, ITEM, JUKEBOX_SONG, LOOT_TABLES, MAP_DECORATION_TYPE, MATERIAL, MEMORY_MODULE_TYPE, MENU, PARTICLE_TYPE, PIG_VARIANT, POTION, SOUNDS, STATISTIC, STRUCTURE, STRUCTURE_TYPE, TRIM_MATERIAL, TRIM_PATTERN, VILLAGER_PROFESSION, VILLAGER_TYPE, WOLF_VARIANT -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal voidaddEntries(T... entries) Registers multiple new entries.voidRegisters a new entry under a certain key.voidaddEntryOrThrow(T entry) Registers a new entry under a certain key.get(@NotNull org.bukkit.NamespacedKey namespacedKey) Gets an entry from the deferred-registrygetOptional(@NotNull String keyString) Optionally retrieves an entry from this deferred-registry by itsNamespacedKeyin aStringrepresentation.getOptional(@NotNull org.bukkit.NamespacedKey namespacedKey) Optionally retrieves an entry from this deferred-registry by itsNamespacedKey.getOrThrow(@NotNull org.bukkit.NamespacedKey namespacedKey) Gets an entry from the deferred-registry, or throws an exceptionvoidInitializes this deferred-registry.booleanChecks if this deferred-registry is already initialized or not.iterator()@NotNull Stream<org.bukkit.NamespacedKey> voidremoveEntry(@NotNull org.bukkit.NamespacedKey key) Removes an entry this deferred-registryvoidremoveEntryOrThrow(@NotNull org.bukkit.NamespacedKey key) Removes an entry this deferred-registrystream()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliteratorMethods inherited from interface org.bukkit.Registry
match
-
Constructor Details
-
DeferredRegistry
public DeferredRegistry()
-
-
Method Details
-
isInitialized
public boolean isInitialized()Checks if this deferred-registry is already initialized or not.Important
When this deferred-registry is initialized, it will be turned immutable for safety.- Returns:
- True if this deferred-registry instance is initialized.
-
initialize
public void initialize()Initializes this deferred-registry.Important
When this deferred-registry is initialized, it will be turned immutable for safety. -
addEntry
Registers a new entry under a certain key.Nothing will change when this deferred-registry is initialized.
- Parameters:
entry- The entry to add
-
removeEntryOrThrow
public void removeEntryOrThrow(@NotNull @NotNull org.bukkit.NamespacedKey key) throws IllegalStateException, IllegalArgumentException Removes an entry this deferred-registry- Parameters:
key- The key of the entry to remove- Throws:
IllegalStateException- If this deferred-registry is already initialized.IllegalArgumentException- If this deferred-registry does not contain an entry under the givenNamespacedKey.
-
removeEntry
public void removeEntry(@NotNull @NotNull org.bukkit.NamespacedKey key) Removes an entry this deferred-registry- Parameters:
key- The key of the entry to remove
-
addEntries
Registers multiple new entries.Nothing will change when this deferred-registry is initialized.
- Parameters:
entries- The entry to add
-
addEntryOrThrow
public void addEntryOrThrow(@NotNull T entry) throws IllegalArgumentException, IllegalStateException Registers a new entry under a certain key.- Parameters:
entry- The entry to add- Throws:
IllegalArgumentException- when an entry is already registered under the same key.IllegalStateException- when this registry is already initialized
-
get
Gets an entry from the deferred-registry- Specified by:
getin interfaceorg.bukkit.Registry<T extends org.bukkit.Keyed>- Parameters:
namespacedKey- TheNamespacedKeyof the entry you are trying to retrieve- Returns:
- The entry under the given
NamespacedKeyor null if not found.
-
getOrThrow
@NotNull public T getOrThrow(@NotNull @NotNull org.bukkit.NamespacedKey namespacedKey) throws IllegalArgumentException Gets an entry from the deferred-registry, or throws an exception- Specified by:
getOrThrowin interfaceorg.bukkit.Registry<T extends org.bukkit.Keyed>- Parameters:
namespacedKey- TheNamespacedKeyof the entry you are trying to retrieve- Returns:
- The entry under the given
NamespacedKey. - Throws:
IllegalArgumentException- when no entry is registered under the givenNamespacedKey
-
getOptional
@NotNull public @NotNull Optional<T> getOptional(@NotNull @NotNull org.bukkit.NamespacedKey namespacedKey) Optionally retrieves an entry from this deferred-registry by itsNamespacedKey.Usage
This method optionally returns an entry of this deferred-registry.
You could use the returnedOptionallike this:registry.getOptional(NamespacedKey.fromString("my_plugin:foo_entry")) .ifPresent( (entry) -> { entry.doSomething(); // You can do anything here } );- Parameters:
namespacedKey- TheNamespacedKeyof the entry you are trying to retrieve- Returns:
- The
Optionalthat might contain the entry from the given key
-
getOptional
Optionally retrieves an entry from this deferred-registry by itsNamespacedKeyin aStringrepresentation.When using an invalid
Stringrepresentation of aNamespacedKey, an emptyOptionalwill be returned.Usage
This method optionally returns an entry of this deferred-registry.
You could use the returnedOptionallike this:registry.getOptional("my_plugin:foo_entry") .ifPresent( (entry) -> { entry.doSomething(); // You can do anything here } ); -
stream
-
keyStream
-
iterator
-