RegistrationWrapFunction interface
Пакет: com.hypixel.hytale.registry
Файл: com/hypixel/hytale/registry/Registry.java
Методы (1)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
T |
wrapT wrap(T var1, BooleanSupplier var2, Runnable var3) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.registry;
class="kw">import com.hypixel.hytale.function.consumer.BooleanConsumer;
class="kw">import java.util.Collections;
class="kw">import java.util.List;
class="kw">import java.util.function.BooleanSupplier;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class="kw">abstract class Registry<T class="kw">extends Registration> {
@Nonnull
class="kw">private class="kw">final BooleanSupplier precondition;
@Nullable
class="kw">private class="kw">final String preconditionMessage;
class="kw">private class="kw">final Registry.RegistrationWrapFunction<T> wrappingFunction;
@Nonnull
class="kw">private class="kw">final List<BooleanConsumer> registrations;
@Nonnull
class="kw">private class="kw">final List<BooleanConsumer> unmodifiableRegistrations;
class="kw">private boolean enabled = true;
class="kw">protected Registry(
@Nonnull List<BooleanConsumer> var1, @Nonnull BooleanSupplier var2, @Nullable String var3, @Nonnull Registry.RegistrationWrapFunction<T> var4
) {
this.registrations = var1;
this.unmodifiableRegistrations = Collections.unmodifiableList(var1);
this.precondition = var2;
this.preconditionMessage = var3;
this.wrappingFunction = var4;
}
class="kw">protected void checkPrecondition() {
if (!this.precondition.getAsBoolean()) {
throw new IllegalStateException(this.preconditionMessage);
}
}
class="kw">public boolean isEnabled() {
class="kw">return this.enabled;
}
class="kw">public void enable() {
this.enabled = true;
}
class="kw">public void shutdown() {
this.enabled = false;
}
class="kw">public void shutdownAndCleanup(boolean var1) {
this.enabled = false;
for (int var2 = this.registrations.size() - 1; var2 >= 0; var2--) {
this.registrations.get(var2).accept(var1);
}
this.registrations.clear();
}
class="kw">public T register(@Nonnull T var1) {
if (!this.enabled) {
var1.unregister();
throw new IllegalStateException("Registry is not enabled!");
} else {
BooleanConsumer var2 = var1x -> var1.unregister();
Registration var3 = this.wrappingFunction.wrap(var1, () -> this.enabled || var1.isRegistered(), () -> {
this.registrations.remove(var2);
var1.unregister();
});
this.registrations.add(var2);
class="kw">return var3;
}
}
@Nonnull
class="kw">public List<BooleanConsumer> getRegistrations() {
class="kw">return this.unmodifiableRegistrations;
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "Registry{registrations.size()=" + this.registrations.size() + "}";
}
class="kw">public class="kw">interface RegistrationWrapFunction<T class="kw">extends Registration> {
T wrap(T var1, BooleanSupplier var2, Runnable var3);
}
}