AmbienceFX class

Пакет: com.hypixel.hytale.server.core.asset.type.ambiencefx.config

Файл: com/hypixel/hytale/server/core/asset/type/ambiencefx/config/AmbienceFX.java

implements: JsonAssetWithMap<String, IndexedAssetMap<String, AmbienceFX>>, NetworkSerializable<com.hypixel.hytale.protocol.AmbienceFX>

Поля (5)

МодификаторыТипИмя
ASSET_STORE
final ValidatorCache<String> VALIDATOR_CACHE
com.hypixel.hytale.protocol.AmbienceFX var1
AmbienceFXMusic var1
com.hypixel.hytale.protocol.AmbienceFX var2

Методы (32)

МодификаторыВозвратСигнатура
for for(AmbienceFXSound var4 : var0.sounds)
for for(int var2 = 0; var2 < var0.sounds.length; var2++)
for for(int var3 = 0; var3 < this.blockedAmbienceFxIds.length; var3++)
for for(int var4 = 0; var4 < this.setStates.length; var4++)
public AmbienceFXAmbientBed getAmbientBedAmbienceFXAmbientBed getAmbientBed()
static IndexedAssetMap<String, AmbienceFX> getAssetMapIndexedAssetMap<String, AmbienceFX> getAssetMap()
static AssetStore<String, AmbienceFX, IndexedAssetMap<String, AmbienceFX>> getAssetStoreAssetStore<String, AmbienceFX, IndexedAssetMap<String, AmbienceFX>> getAssetStore()
public int getAudioCategoryIndexint getAudioCategoryIndex()
public String[] getBlockedAmbienceFxIdsString[] getBlockedAmbienceFxIds()
public AmbienceFXConditions getConditionsAmbienceFXConditions getConditions()
public String getIdString getId()
public int getMusicContainerIndexint getMusicContainerIndex()
public int getPriorityint getPriority()
public AmbienceFXSoundEffect getSoundEffectAmbienceFXSoundEffect getSoundEffect()
public AmbienceFXSound[] getSoundsAmbienceFXSound[] getSounds()
if if(var0.audioCategoryId != null)
if if(var0.sounds != null)
if if(var0.ambientBed != null)
if if(var0.sounds != null)
if if(var0.ambientBed != null)
if if(ASSET_STORE == null)
if if(var1 != null)
if if(this.conditions != null)
if if(this.sounds != null && this.sounds.length > 0)
if if(this.ambientBed != null)
if if(this.soundEffect != null)
if if(this.blockedAmbienceFxIds != null)
if if(this.setStates != null && this.setStates.length > 0)
if if(!this.musicContainerIndexResolved)
if if(this.musicContainerId != null)
if if(this.legacyMusic != null && this.musicContainerId == null)
private void resolveMusicContainerIndexvoid resolveMusicContainerIndex()

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.asset.type.ambiencefx.config;

class="kw">import com.hypixel.hytale.assetstore.AssetExtraInfo;
class="kw">import com.hypixel.hytale.assetstore.AssetKeyValidator;
class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
class="kw">import com.hypixel.hytale.assetstore.AssetStore;
class="kw">import com.hypixel.hytale.assetstore.codec.AssetBuilderCodec;
class="kw">import com.hypixel.hytale.assetstore.map.IndexedAssetMap;
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.schema.metadata.ui.UIDefaultCollapsedState;
class="kw">import com.hypixel.hytale.codec.schema.metadata.ui.UIEditorSectionStart;
class="kw">import com.hypixel.hytale.codec.validation.ValidatorCache;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.common.util.ArrayUtil;
class="kw">import com.hypixel.hytale.protocol.AmbienceStateWrite;
class="kw">import com.hypixel.hytale.server.core.asset.type.audiocategory.config.AudioCategory;
class="kw">import com.hypixel.hytale.server.core.asset.type.audiostate.config.AmbienceStateWriteConfig;
class="kw">import com.hypixel.hytale.server.core.asset.type.audiostate.config.AudioStateResolver;
class="kw">import com.hypixel.hytale.server.core.asset.type.musiccontainer.config.MusicContainer;
class="kw">import com.hypixel.hytale.server.core.io.NetworkSerializable;
class="kw">import java.lang.ref.SoftReference;
class="kw">import java.util.Arrays;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class AmbienceFX class="kw">implements JsonAssetWithMap<String, IndexedAssetMap<String, AmbienceFX>>, NetworkSerializable<com.hypixel.hytale.protocol.AmbienceFX> {
   class="kw">public class="kw">static class="kw">final ValidatorCache<String> VALIDATOR_CACHE = new ValidatorCache<>(new AssetKeyValidator<>(AmbienceFX::getAssetStore));
   class="kw">public class="kw">static class="kw">final AssetBuilderCodec<String, AmbienceFX> CODEC = AssetBuilderCodec.builder(
         AmbienceFX.class, AmbienceFX::new, Codec.STRING, (var0, var1) -> var0.id = var1, var0 -> var0.id, (var0, var1) -> var0.data = var1, var0 -> var0.data
      )
      .appendInherited(
         new KeyedCodec<>("Conditions", AmbienceFXConditions.CODEC),
         (var0, var1) -> var0.conditions = var1,
         var0 -> var0.conditions,
         (var0, var1) -> var0.conditions = var1.conditions
      )
      .metadata(new UIEditorSectionStart("Conditions"))
      .metadata(UIDefaultCollapsedState.UNCOLLAPSED)
      .add()
      .<AmbienceFXSound[]>appendInherited(
         new KeyedCodec<>("Sounds", new ArrayCodec<>(AmbienceFXSound.CODEC, AmbienceFXSound[]::new)),
         (var0, var1) -> var0.sounds = var1,
         var0 -> var0.sounds,
         (var0, var1) -> var0.sounds = var1.sounds
      )
      .metadata(new UIEditorSectionStart("Audio"))
      .add()
      .<AmbienceFXMusic>appendInherited(
         new KeyedCodec<>("Music", AmbienceFXMusic.CODEC),
         (var0, var1) -> var0.legacyMusic = var1,
         var0 -> var0.legacyMusic,
         (var0, var1) -> var0.legacyMusic = var1.legacyMusic
      )
      .documentation("Deprecated: Use MusicContainer instead.")
      .add()
      .<String>appendInherited(
         new KeyedCodec<>("MusicContainer", MusicContainer.CHILD_ASSET_CODEC),
         (var0, var1) -> var0.musicContainerId = var1,
         var0 -> var0.musicContainerId,
         (var0, var1) -> var0.musicContainerId = var1.musicContainerId
      )
      .addValidator(MusicContainer.VALIDATOR_CACHE.getValidator())
      .add()
      .appendInherited(
         new KeyedCodec<>("AmbientBed", AmbienceFXAmbientBed.CODEC),
         (var0, var1) -> var0.ambientBed = var1,
         var0 -> var0.ambientBed,
         (var0, var1) -> var0.ambientBed = var1.ambientBed
      )
      .add()
      .appendInherited(
         new KeyedCodec<>("SoundEffect", AmbienceFXSoundEffect.CODEC),
         (var0, var1) -> var0.soundEffect = var1,
         var0 -> var0.soundEffect,
         (var0, var1) -> var0.soundEffect = var1.soundEffect
      )
      .add()
      .<Integer>appendInherited(
         new KeyedCodec<>("Priority", Codec.INTEGER),
         (var0, var1) -> var0.priority = var1,
         var0 -> var0.priority,
         (var0, var1) -> var0.priority = var1.priority
      )
      .addValidator(Validators.greaterThanOrEqual(0))
      .documentation("Priority for this AmbienceFX. Only applies to music and sound effect. Higher number means higher priority.")
      .add()
      .<String[]>appendInherited(
         new KeyedCodec<>("BlockedAmbienceFxIds", Codec.STRING_ARRAY),
         (var0, var1) -> var0.blockedAmbienceFxIds = var1,
         var0 -> var0.blockedAmbienceFxIds,
         (var0, var1) -> var0.blockedAmbienceFxIds = var1.blockedAmbienceFxIds
      )
      .addValidatorLate(() -> VALIDATOR_CACHE.getArrayValidator().late())
      .add()
      .<String>appendInherited(
         new KeyedCodec<>("AudioCategory", Codec.STRING),
         (var0, var1) -> var0.audioCategoryId = var1,
         var0 -> var0.audioCategoryId,
         (var0, var1) -> var0.audioCategoryId = var1.audioCategoryId
      )
      .addValidator(AudioCategory.VALIDATOR_CACHE.getValidator())
      .documentation("Audio category to assign this ambienceFX to for additional property routing. Only affects ambient bed and music, not emitters.")
      .add()
      .<AmbienceStateWriteConfig[]>append(
         new KeyedCodec<>("SetStates", AmbienceStateWriteConfig.CODEC_ARRAY), (var0, var1) -> var0.setStates = var1, var0 -> var0.setStates
      )
      .documentation(
         "When this AmbienceFX asset becomes active on the client, these states will be set. Targets must be AudioState assets with Authority: Client."
      )
      .add()
      .afterDecode(var0 -> {
         if (var0.audioCategoryId != null) {
            var0.audioCategoryIndex = AudioCategory.getAssetMap().getIndex(var0.audioCategoryId);
         }

         AudioStateResolver.resolveSetStates(var0.setStates);
         if (var0.sounds != null) {
            for (AmbienceFXSound var4 : var0.sounds) {
               AudioStateResolver.resolveBindings(var4.getStateBindings());
            }
         }

         if (var0.ambientBed != null) {
            AudioStateResolver.resolveBindings(var0.ambientBed.getStateBindings());
         }
      })
      .validator((var0, var1) -> {
         AudioStateResolver.validateSetStates(var0.setStates, "AmbienceFX '" + var0.id + "'", var1);
         if (var0.sounds != null) {
            for (int var2 = 0; var2 < var0.sounds.length; var2++) {
               AudioStateResolver.validateBindings(var0.sounds[var2].getStateBindings(), "AmbienceFX '" + var0.id + "' Sounds[" + var2 + "]", var1);
            }
         }

         if (var0.ambientBed != null) {
            AudioStateResolver.validateBindings(var0.ambientBed.getStateBindings(), "AmbienceFX '" + var0.id + "' AmbientBed", var1);
         }
      })
      .build();
   class="kw">public class="kw">static class="kw">final int EMPTY_ID = 0;
   class="kw">public class="kw">static class="kw">final AmbienceFX EMPTY = new AmbienceFX() {
      {
         this.id = "Empty";
      }
   };
   class="kw">private class="kw">static AssetStore<String, AmbienceFX, IndexedAssetMap<String, AmbienceFX>> ASSET_STORE;
   class="kw">protected AssetExtraInfo.Data data;
   class="kw">protected String id;
   class="kw">protected AmbienceFXConditions conditions;
   class="kw">protected AmbienceFXSound[] sounds;
   class="kw">protected AmbienceFXMusic legacyMusic;
   @Nullable
   class="kw">protected String musicContainerId;
   class="kw">protected class="kw">transient int musicContainerIndex;
   class="kw">protected class="kw">transient boolean musicContainerIndexResolved;
   class="kw">protected AmbienceFXAmbientBed ambientBed;
   class="kw">protected AmbienceFXSoundEffect soundEffect;
   class="kw">protected int priority = 0;
   class="kw">protected String[] blockedAmbienceFxIds;
   @Nullable
   class="kw">protected String audioCategoryId = null;
   class="kw">protected class="kw">transient int audioCategoryIndex = 0;
   @Nullable
   class="kw">public AmbienceStateWriteConfig[] setStates;
   class="kw">private SoftReference<com.hypixel.hytale.protocol.AmbienceFX> cachedPacket;

   class="kw">public class="kw">static AssetStore<String, AmbienceFX, IndexedAssetMap<String, AmbienceFX>> getAssetStore() {
      if (ASSET_STORE == null) {
         ASSET_STORE = AssetRegistry.getAssetStore(AmbienceFX.class);
      }

      class="kw">return ASSET_STORE;
   }

   class="kw">public class="kw">static IndexedAssetMap<String, AmbienceFX> getAssetMap() {
      class="kw">return (IndexedAssetMap<String, AmbienceFX>)getAssetStore().getAssetMap();
   }

   class="kw">public AmbienceFX(String var1) {
      this.id = var1;
   }

   class="kw">protected AmbienceFX() {
   }

   @Nonnull
   class="kw">public com.hypixel.hytale.protocol.AmbienceFX toPacket() {
      com.hypixel.hytale.protocol.AmbienceFX var1 = this.cachedPacket == null ? null : this.cachedPacket.get();
      if (var1 != null) {
         class="kw">return var1;
      }

      com.hypixel.hytale.protocol.AmbienceFX var2 = new com.hypixel.hytale.protocol.AmbienceFX();
      var2.id = this.id;
      if (this.conditions != null) {
         var2.conditions = this.conditions.toPacket();
      }

      if (this.sounds != null && this.sounds.length > 0) {
         var2.sounds = ArrayUtil.copyAndMutate(this.sounds, AmbienceFXSound::toPacket, com.hypixel.hytale.protocol.AmbienceFXSound[]::new);
      }

      this.resolveMusicContainerIndex();
      var2.musicContainerIndex = this.musicContainerIndex;
      if (this.ambientBed != null) {
         var2.ambientBed = this.ambientBed.toPacket();
      }

      if (this.soundEffect != null) {
         var2.soundEffect = this.soundEffect.toPacket();
      }

      var2.priority = this.priority;
      if (this.blockedAmbienceFxIds != null) {
         var2.blockedAmbienceFxIndices = new int[this.blockedAmbienceFxIds.length];

         for (int var3 = 0; var3 < this.blockedAmbienceFxIds.length; var3++) {
            var2.blockedAmbienceFxIndices[var3] = getAssetMap().getIndex(this.blockedAmbienceFxIds[var3]);
         }
      }

      var2.audioCategoryIndex = this.audioCategoryIndex;
      if (this.setStates != null && this.setStates.length > 0) {
         var2.setStates = new AmbienceStateWrite[this.setStates.length];

         for (int var4 = 0; var4 < this.setStates.length; var4++) {
            var2.setStates[var4] = this.setStates[var4].toPacket();
         }
      }

      this.cachedPacket = new SoftReference<>(var2);
      class="kw">return var2;
   }

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

   class="kw">public AmbienceFXConditions getConditions() {
      class="kw">return this.conditions;
   }

   class="kw">public AmbienceFXSound[] getSounds() {
      class="kw">return this.sounds;
   }

   class="kw">public int getMusicContainerIndex() {
      this.resolveMusicContainerIndex();
      class="kw">return this.musicContainerIndex;
   }

   class="kw">private void resolveMusicContainerIndex() {
      if (!this.musicContainerIndexResolved) {
         this.musicContainerIndexResolved = true;
         if (this.musicContainerId != null) {
            this.musicContainerIndex = MusicContainer.getAssetMap().getIndex(this.musicContainerId);
         }
      }
   }

   @Nullable
   class="kw">public AmbienceFXMusic consumeLegacyMusic() {
      if (this.legacyMusic != null && this.musicContainerId == null) {
         AmbienceFXMusic var1 = this.legacyMusic;
         this.musicContainerId = "_legacy_" + this.id;
         this.legacyMusic = null;
         class="kw">return var1;
      } else {
         class="kw">return null;
      }
   }

   @Nullable
   class="kw">public String getAudioCategoryId() {
      class="kw">return this.audioCategoryId;
   }

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

   class="kw">public AmbienceFXAmbientBed getAmbientBed() {
      class="kw">return this.ambientBed;
   }

   class="kw">public AmbienceFXSoundEffect getSoundEffect() {
      class="kw">return this.soundEffect;
   }

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

   class="kw">public String[] getBlockedAmbienceFxIds() {
      class="kw">return this.blockedAmbienceFxIds;
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "AmbienceFX{id='"
         + this.id
         + "', conditions="
         + this.conditions
         + ", sounds="
         + Arrays.toString(this.sounds)
         + ", musicContainerIndex="
         + this.musicContainerIndex
         + ", ambientBed="
         + this.ambientBed
         + ", soundEffect='"
         + this.soundEffect
         + "', priority="
         + this.priority
         + ", blockedAmbienceFxIds="
         + Arrays.toString(this.blockedAmbienceFxIds)
         + ", audioCategoryId="
         + this.audioCategoryId
         + "}";
   }
}