State enum

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

Файл: com/hypixel/hytale/builtin/adventure/worldevents/event/WorldEventAsset.java

Поля (1)

МодификаторыТипИмя
INIT, VALID, INVALID

Исходный код

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

class="kw">import com.hypixel.hytale.assetstore.AssetExtraInfo;
class="kw">import com.hypixel.hytale.assetstore.AssetMap;
class="kw">import com.hypixel.hytale.assetstore.codec.AssetBuilderCodec;
class="kw">import com.hypixel.hytale.assetstore.codec.ContainedAssetCodec;
class="kw">import com.hypixel.hytale.assetstore.map.DefaultAssetMap;
class="kw">import com.hypixel.hytale.assetstore.map.JsonAssetWithMap;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class WorldEventAsset class="kw">implements JsonAssetWithMap<String, AssetMap<String, WorldEventAsset>> {
   class="kw">public class="kw">static class="kw">final AssetBuilderCodec<String, WorldEventAsset> CODEC = AssetBuilderCodec.builder(
         WorldEventAsset.class,
         WorldEventAsset::new,
         Codec.STRING,
         WorldEventAsset::setAssetId,
         WorldEventAsset::getAssetId,
         WorldEventAsset::setAssetData,
         WorldEventAsset::getAssetData
      )
      .documentation("Represents a timeline of stages that progress from one to the other depending on the condition and action definitions at each stage.")
      .<String>appendInherited(
         new KeyedCodec<>("Root", StageAsset.REF_CODEC), (var0, var1) -> var0.root = var1, var0 -> var0.root, (var0, var1) -> var0.root = var1.root
      )
      .documentation("The starting stage for the event.")
      .add()
      .<Boolean>appendInherited(
         new KeyedCodec<>("Persistent", Codec.BOOLEAN),
         (var0, var1) -> var0.persistent = var1,
         var0 -> var0.persistent,
         (var0, var1) -> var0.persistent = var1.persistent
      )
      .documentation("The event should be persisted with the world and resumed after server restarts.")
      .add()
      .<Integer>appendInherited(
         new KeyedCodec<>("IterationCount", Codec.INTEGER),
         (var0, var1) -> var0.iterationCount = var1,
         var0 -> var0.iterationCount,
         (var0, var1) -> var0.iterationCount = var1.iterationCount
      )
      .documentation("The number of times this event will repeat. Set to -1 to repeat indefinitely.")
      .addValidator(Validators.greaterThanOrEqual(-1))
      .add()
      .<Integer>appendInherited(
         new KeyedCodec<>("PlayerCountMin", Codec.INTEGER),
         (var0, var1) -> var0.playerCountMin = var1,
         var0 -> var0.playerCountMin,
         (var0, var1) -> var0.playerCountMin = var1.playerCountMin
      )
      .documentation("The minimum number of players in the world required for the event to run.")
      .addValidator(Validators.greaterThanOrEqual(0))
      .add()
      .<Integer>appendInherited(
         new KeyedCodec<>("InstanceCountMax", Codec.INTEGER),
         (var0, var1) -> var0.instanceCountMax = var1,
         var0 -> var0.instanceCountMax,
         (var0, var1) -> var0.instanceCountMax = var1.instanceCountMax
      )
      .documentation("The maximum number of instances of the event that can be running at once.")
      .addValidator(Validators.greaterThanOrEqual(-1))
      .add()
      .build();
   class="kw">public class="kw">static class="kw">final Codec<String> REF_CODEC = new ContainedAssetCodec<>(WorldEventAsset.class, CODEC);
   class="kw">public class="kw">static class="kw">final Codec<String[]> REF_ARRAY_CODEC = new ArrayCodec<>(REF_CODEC, String[]::new);
   class="kw">public class="kw">static class="kw">final DefaultAssetMap<String, WorldEventAsset> ASSET_MAP = new DefaultAssetMap<>();
   class="kw">public class="kw">static class="kw">final String UNKNOWN_KEY = "Unknown";
   class="kw">public class="kw">static class="kw">final WorldEventAsset UNKNOWN = new WorldEventAsset();
   class="kw">public class="kw">static class="kw">final WorldEventAsset[] EMPTY_ARRAY = new WorldEventAsset[0];
   class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
   @Nonnull
   class="kw">protected String assetId = "Unknown";
   @Nullable
   class="kw">protected AssetExtraInfo.Data assetData = null;
   @Nonnull
   class="kw">protected String root = "Unknown";
   class="kw">protected boolean persistent = true;
   class="kw">protected int playerCountMin = 1;
   class="kw">protected int iterationCount = -1;
   class="kw">protected int instanceCountMax = -1;
   @Nonnull
   class="kw">protected class="kw">transient WorldEventAsset.State state = WorldEventAsset.State.INIT;

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

   @Nonnull
   class="kw">public String getId() {
      class="kw">return this.assetId;
   }

   class="kw">public boolean isPersistent() {
      class="kw">return this.persistent;
   }

   @Nonnull
   class="kw">public String root() {
      class="kw">return this.root;
   }

   class="kw">public int playerCountMin() {
      class="kw">return this.playerCountMin;
   }

   class="kw">public int iterationCount() {
      class="kw">return this.iterationCount;
   }

   class="kw">public int instanceCountMax() {
      class="kw">return this.instanceCountMax;
   }

   class="kw">public boolean valid() {
      if (this.state == WorldEventAsset.State.INIT) {
         this.state = validate(this);
      }

      class="kw">return this.state == WorldEventAsset.State.VALID && this.iterationCount != 0;
   }

   @Nonnull
   class="kw">protected String getAssetId() {
      class="kw">return this.assetId;
   }

   class="kw">protected void setAssetId(@Nonnull String var1) {
      this.assetId = var1;
   }

   @Nullable
   class="kw">protected AssetExtraInfo.Data getAssetData() {
      class="kw">return this.assetData;
   }

   class="kw">protected void setAssetData(@Nullable AssetExtraInfo.Data var1) {
      this.assetData = var1;
   }

   @Nullable
   class="kw">public WorldEvent build(@Nullable UUID var1, boolean var2) {
      if (!this.valid()) {
         ((HytaleLogger.Api)LOGGER.atWarning()).log("Cannot build world-event asset that failed validation: %s", this.assetId);
         class="kw">return null;
      } else {
         WorldEvent var3 = new WorldEvent();
         var3.uuid = var1 != null && !var1.equals(WorldEvent.EMPTY_ID) ? var1 : UUID.randomUUID();
         var3.isTransient = var2;
         var3.asset = this.assetId;
         var3.repeatCount = this.iterationCount;
         var3.requiredPlayerCount = this.playerCountMin;
         var3.root = StageAsset.getAssetOrUnknown(this.root).build(new StageId());
         var3.stage = var3.root;
         class="kw">return var3;
      }
   }

   @Nonnull
   class="kw">protected class="kw">static WorldEventAsset.State validate(@Nonnull WorldEventAsset var0) {
      Validator.Result var1 = new Validator().validate(var0);
      if (var1.code() == Validator.Code.PASS) {
         class="kw">return WorldEventAsset.State.VALID;
      }

      if (var1.message() == null) {
         ((HytaleLogger.Api)LOGGER.atWarning()).log("WorldEventAsset is invalid");
      } else {
         ((HytaleLogger.Api)LOGGER.atWarning()).log("WorldEventAsset is invalid: %s", var1.message());
      }

      class="kw">return WorldEventAsset.State.INVALID;
   }

   class="kw">public class="kw">static WorldEventAsset getAssetOrUnknown(@Nonnull String var0) {
      class="kw">return ASSET_MAP.getAssetMap().getOrDefault(var0, UNKNOWN);
   }

   class="kw">protected enum State {
      INIT,
      VALID,
      INVALID;

      State() {
      }
   }
}