Registry.java
package com.hypixel.hytale.registry;
import com.hypixel.hytale.function.consumer.BooleanConsumer;
import java.util.Collections;
import java.util.List;
import java.util.function.BooleanSupplier;
import javax.annotation.Nonnull;
public abstract class Registry<T extends Registration> {
@Nonnull
private final BooleanSupplier precondition;
private final String preconditionMessage;
private final RegistrationWrapFunction<T> wrappingFunction;
@Nonnull
private final List<BooleanConsumer> registrations;
@Nonnull
private final List<BooleanConsumer> unmodifiableRegistrations;
private boolean enabled = true;
protected Registry(@Nonnull List<BooleanConsumer> registrations, @Nonnull BooleanSupplier precondition, String preconditionMessage, @Nonnull RegistrationWrapFunction<T> wrappingFunction) {
this.registrations = registrations;
this.unmodifiableRegistrations = Collections.unmodifiableList(registrations);
.precondition = precondition;
.preconditionMessage = preconditionMessage;
.wrappingFunction = wrappingFunction;
}
{
(!.precondition.getAsBoolean()) {
(.preconditionMessage);
}
}
{
.enabled;
}
{
.enabled = ;
}
{
.enabled = ;
}
T {
(!.enabled) {
registration.unregister();
();
} {
(v) -> registration.unregister();
.registrations.add(reg);
.wrappingFunction.wrap(registration, () -> .enabled || registration.isRegistered(), () -> {
.registrations.remove(reg);
registration.unregister();
});
}
}
List<BooleanConsumer> {
.unmodifiableRegistrations;
}
String {
+ .registrations.size() + ;
}
<T > {
T ;
}
}