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