com/hypixel/hytale/registry/Registration.java
package com.hypixel.hytale.registry;
import java.util.function.BooleanSupplier;
import javax.annotation.Nonnull;
public class Registration {
@Nonnull
protected final BooleanSupplier isEnabled;
@Nonnull
protected final Runnable unregister;
private boolean registered = true;
public Registration(@Nonnull BooleanSupplier isEnabled, @Nonnull Runnable unregister) {
this.isEnabled = isEnabled;
this.unregister = unregister;
}
public void unregister() {
if (this.registered && this.isEnabled.getAsBoolean()) {
this.unregister.run();
}
this.registered = false;
}
public boolean isRegistered() {
return this.registered && this.isEnabled.getAsBoolean();
}
@Nonnull
public String toString() {
String var10000 = String.valueOf(this.isEnabled);
return "Registration{isEnabled=" + var10000 + ", unregister=" + String.valueOf(this.unregister) + ", registered=" + this.registered + "}";
}
}
com/hypixel/hytale/registry/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);
this.precondition = precondition;
this.preconditionMessage = preconditionMessage;
this.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 ;
}
}