package com.hypixel.hytale.event; import com.hypixel.hytale.registry.Registration; import java.util.function.BooleanSupplier; import javax.annotation.Nonnull; public class EventRegistration> extends Registration { @Nonnull protected final Class eventClass; public EventRegistration(@Nonnull Class eventClass, @Nonnull BooleanSupplier isEnabled, @Nonnull Runnable unregister) { super(isEnabled, unregister); this.eventClass = eventClass; } public EventRegistration(@Nonnull EventRegistration registration, @Nonnull BooleanSupplier isEnabled, @Nonnull Runnable unregister) { super(isEnabled, unregister); this.eventClass = registration.eventClass; } @Nonnull public Class getEventClass() { return this.eventClass; } @Nonnull @Override public String toString() { return "EventRegistration{eventClass=" + this.eventClass + ", " + super.toString() + "}"; } @Nonnull @SafeVarargs public static > EventRegistration combine( @Nonnull EventRegistration thisRegistration, @Nonnull EventRegistration... containerRegistrations ) { return new EventRegistration<>(thisRegistration.eventClass, () -> { if (!thisRegistration.isEnabled.getAsBoolean()) { return false; } else { for (EventRegistration containerRegistration : containerRegistrations) { if (!containerRegistration.isEnabled.getAsBoolean()) { return false; } } return true; } }, () -> { thisRegistration.unregister(); for (EventRegistration containerRegistration : containerRegistrations) { containerRegistration.unregister(); } }); } }