Registry class

Пакет: com.hypixel.hytale.registry

Файл: com/hypixel/hytale/registry/Registry.java

Поля (2)

МодификаторыТипИмя
BooleanConsumer var2
Registration var3

Методы (10)

МодификаторыВозвратСигнатура
abstract throw new IllegalStateExceptionthrow new IllegalStateException(this.preconditionMessage)
abstract throw new IllegalStateExceptionthrow new IllegalStateException("Registry is not enabled!")
protected void checkPreconditionvoid checkPrecondition()
public void enablevoid enable()
if if(!this.enabled)
public boolean isEnabledboolean isEnabled()
public T registerT register(@Nonnull T var1)
public void shutdownvoid shutdown()
public void shutdownAndCleanupvoid shutdownAndCleanup(boolean var1)
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);
   }
}