WorldClosedCondition class

Пакет: com.hypixel.hytale.builtin.adventure.worldevents.condition

Файл: com/hypixel/hytale/builtin/adventure/worldevents/condition/WorldClosedCondition.java

implements: EventCondition.Ticking

Поля (8)

МодификаторыТипИмя
public static final BuilderCodec<WorldClosedCondition.Config> CODEC
protected static final float DEFAULT_LOAD_TIMEOUT
protected static final WorldClosedCondition.Config EMPTY
final String ID
protected float loadTimeoutSeconds
WorldClosedCondition var1
boolean var3
protected ContextKey worldKey

Методы (6)

МодификаторыВозвратСигнатура
public Configpublic Config()
public EventCondition createpublic EventCondition create()
if if(this.world != null)
if if(this.config.worldKey == null)
if if(this.world == null)
public void validatepublic void validate(@Nonnull Validator var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.worldevents.condition;

class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.context.ContextKey;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.context.WorldContext;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.Validator;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.WorldEvent;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class WorldClosedCondition class="kw">implements EventCondition.Ticking {
   class="kw">public class="kw">static class="kw">final String ID = "WorldClosedCondition";
   class="kw">public class="kw">static class="kw">final EventCondition.Type TYPE = new EventCondition.Type("WorldClosedCondition", 2.0F);
   class="kw">public class="kw">static class="kw">final BuilderCodec<WorldClosedCondition> CODEC = BuilderCodec.builder(WorldClosedCondition.class, WorldClosedCondition::new).build();
   class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
   @Nonnull
   class="kw">protected WorldClosedCondition.Config config = WorldClosedCondition.Config.EMPTY;
   @Nullable
   class="kw">protected WorldContext world = null;
   class="kw">protected boolean isLoaded = false;
   class="kw">protected boolean wasLoaded = false;
   class="kw">protected float timeoutSeconds = Float.NaN;

   class="kw">public WorldClosedCondition() {
   }

   @Override
   class="kw">public boolean test() {
      class="kw">return !this.wasLoaded && !Float.isNaN(this.timeoutSeconds) && this.timeoutSeconds <= 0.0F || this.wasLoaded && !this.isLoaded;
   }

   @Override
   class="kw">public void reset() {
      this.wasLoaded = false;
      this.isLoaded = false;
      this.world = null;
      this.timeoutSeconds = Float.NaN;
   }

   @Override
   class="kw">public void tick(float var1, @Nonnull Store<EntityStore> var2) {
      if (this.world != null) {
         assert !Float.isNaN(this.timeoutSeconds) : "WorldClosedCondition.tick() called before onStart()";
         boolean var3 = this.world.getWorld() != null;
         this.wasLoaded |= var3;
         this.isLoaded = var3;
         this.timeoutSeconds -= var1;
      }
   }

   @Override
   class="kw">public boolean onStart(@Nonnull WorldEvent var1) {
      if (this.config.worldKey == null) {
         ((HytaleLogger.Api)LOGGER.atWarning()).log("Condition failed: worldKey not set");
         class="kw">return false;
      } else {
         this.timeoutSeconds = this.config.loadTimeoutSeconds;
         this.world = var1.context.get(this.config.worldKey, WorldContext.class);
         if (this.world == null) {
            ((HytaleLogger.Api)LOGGER.atWarning()).log("Condition failed: WorldContext missing for key: %s", this.config.worldKey.getName());
            class="kw">return false;
         } else {
            class="kw">return true;
         }
      }
   }

   class="kw">public class="kw">static class Config class="kw">implements EventCondition.Config {
      class="kw">public class="kw">static class="kw">final BuilderCodec<WorldClosedCondition.Config> CODEC = BuilderCodec.builder(
            WorldClosedCondition.Config.class, WorldClosedCondition.Config::new
         )
         .documentation("A condition that completes when a given world is closed and unloaded.")
         .<ContextKey>append(new KeyedCodec<>("WorldKey", ContextKey.CODEC), (var0, var1) -> var0.worldKey = var1, var0 -> var0.worldKey)
         .documentation("The variable name of the world to check is closed and unloaded.")
         .add()
         .<Float>append(new KeyedCodec<>("LoadTimeoutSeconds", Codec.FLOAT), (var0, var1) -> var0.loadTimeoutSeconds = var1, var0 -> var0.loadTimeoutSeconds)
         .documentation(
            "Initial amount of time to wait for the target world to load. This prevents the condition completing immediately when the world is slow to load."
         )
         .addValidator(Validators.greaterThanOrEqual(1.0F))
         .add()
         .build();
      class="kw">protected class="kw">static class="kw">final WorldClosedCondition.Config EMPTY = new WorldClosedCondition.Config();
      class="kw">protected class="kw">static class="kw">final float DEFAULT_LOAD_TIMEOUT = 10.0F;
      @Nullable
      class="kw">protected ContextKey worldKey = null;
      class="kw">protected float loadTimeoutSeconds = 10.0F;

      class="kw">public Config() {
      }

      @Nonnull
      @Override
      class="kw">public EventCondition create() {
         WorldClosedCondition var1 = new WorldClosedCondition();
         var1.config = this;
         class="kw">return var1;
      }

      @Override
      class="kw">public void validate(@Nonnull Validator var1) {
         var1.addReferencedKey("WorldClosedCondition", "WorldKey", this.worldKey);
      }
   }
}