3
0
Mirror von https://github.com/GeyserMC/Geyser.git synchronisiert 2024-10-03 08:21:06 +02:00

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

Dieser Commit ist enthalten in:
Konicai 2023-06-18 17:45:25 -04:00 committet von GitHub
Ursprung bed7b5d10e
Commit 2368b63ad5
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: 4AEE18F83AFDEB23

Datei anzeigen

@ -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;
}