1
0
mirror of https://github.com/GeyserMC/Geyser.git synced 2026-01-04 15:31:36 +00:00

Allow deferred registries to be loaded/set more than once (#3892)

This commit is contained in:
Konicai
2023-06-18 17:45:25 -04:00
committed by GitHub
parent bed7b5d10e
commit 2368b63ad5

View File

@@ -69,6 +69,12 @@ public final class DeferredRegistry<M> implements IRegistry<M> {
this.loader = () -> deferredLoader.get().load(input);
}
/**
* Gets the underlying value held by this registry.
*
* @return the underlying value held by this registry
* @throws IllegalStateException if this deferred registry has not been loaded yet
*/
@Override
public M get() {
if (!this.loaded) {
@@ -80,13 +86,15 @@ public final class DeferredRegistry<M> implements IRegistry<M> {
@Override
public void set(M mappings) {
if (!this.loaded) {
throw new IllegalStateException("Registry has not been loaded yet!");
}
this.backingRegistry.set(mappings);
}
/**
* Registers what is specified in the given {@link Consumer} into the underlying value.
*
* @param consumer the consumer
* @throws IllegalStateException if this deferred registry has not been loaded yet
*/
@Override
public void register(Consumer<M> consumer) {
if (!this.loaded) {
@@ -100,10 +108,6 @@ public final class DeferredRegistry<M> implements IRegistry<M> {
* Loads the registry.
*/
public void load() {
if (this.loaded) {
throw new IllegalStateException("Registry has already been loaded!");
}
this.backingRegistry.set(this.loader.get());
this.loaded = true;
}