RandomMusicContainer class

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

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

extends: MusicContainer

Поля (6)

МодификаторыТипИмя
com.hypixel.hytale.protocol.RandomMusicContainer var1
IndexedAssetMap var2
RandomMusicContainer var3
String[] var4
String var6
SingleTrackMusicContainer var7

Методы (5)

МодификаторыВозвратСигнатура
for for(int var5 = 0; var5 < var4.length; var5++)
for for(int var3 = 0; var3 < this.children.length; var3++)
if if(var4 != null && var4.length > 0)
if if(this.children != null && this.children.length > 0)
abstract super super(var1)

Исходный код

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

class="kw">import com.hypixel.hytale.assetstore.AssetReferences;
class="kw">import com.hypixel.hytale.assetstore.map.IndexedAssetMap;
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.codecs.EnumCodec;
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.protocol.RandomMode;
class="kw">import com.hypixel.hytale.server.core.asset.type.ambiencefx.config.AmbienceFXMusic;
class="kw">import java.util.Collections;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class RandomMusicContainer class="kw">extends MusicContainer {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<RandomMusicContainer> CODEC = BuilderCodec.<MusicContainer>builder(
         RandomMusicContainer.class, RandomMusicContainer::new, MusicContainer.ABSTRACT_CODEC
      )
      .documentation("A randomized music container.")
      .<RandomMode>appendInherited(
         new KeyedCodec<>("Mode", new EnumCodec<>(RandomMode.class)),
         (var0, var1) -> var0.mode = var1,
         var0 -> var0.mode,
         (var0, var1) -> var0.mode = var1.mode
      )
      .documentation("Shuffle = even distribution. Random = weighted per-pick selection.")
      .add()
      .<Integer>appendInherited(
         new KeyedCodec<>("AvoidRepeatCount", Codec.INTEGER),
         (var0, var1) -> var0.avoidRepeatCount = var1,
         var0 -> var0.avoidRepeatCount,
         (var0, var1) -> var0.avoidRepeatCount = var1.avoidRepeatCount
      )
      .documentation("How many recently played children to avoid re-selecting.")
      .addValidator(Validators.min(0))
      .add()
      .<String[]>appendInherited(
         new KeyedCodec<>("Children", new ArrayCodec<>(MusicContainer.CHILD_ASSET_CODEC, String[]::new)),
         (var0, var1) -> var0.children = var1,
         var0 -> var0.children,
         (var0, var1) -> var0.children = var1.children
      )
      .addValidator(Validators.nonEmptyArray())
      .addValidatorLate(() -> MusicContainer.VALIDATOR_CACHE.getArrayValidator().late())
      .add()
      .build();
   @Nonnull
   class="kw">protected RandomMode mode = RandomMode.Shuffle;
   class="kw">protected int avoidRepeatCount;
   @Nullable
   class="kw">protected String[] children;

   class="kw">protected RandomMusicContainer() {
      this.resumeMemoryDuration = 600.0F;
   }

   class="kw">public RandomMusicContainer(@Nonnull String var1) {
      super(var1);
      this.resumeMemoryDuration = 600.0F;
   }

   @Nonnull
   class="kw">public class="kw">static RandomMusicContainer fromLegacy(
      @Nonnull String var0, @Nonnull AmbienceFXMusic var1, @Nonnull Map<MusicContainer, List<AssetReferences<?, ?>>> var2
   ) {
      RandomMusicContainer var3 = new RandomMusicContainer();
      var3.volume = var1.getVolume();
      var3.loopCount = 0;
      var3.mode = RandomMode.Shuffle;
      var3.avoidRepeatCount = 1;
      var3.resumeMemoryDuration = 600.0F;
      String[] var4 = var1.getTracks();
      if (var4 != null && var4.length > 0) {
         var3.children = new String[var4.length];

         for (int var5 = 0; var5 < var4.length; var5++) {
            String var6 = var0 + "_" + var5;
            SingleTrackMusicContainer var7 = new SingleTrackMusicContainer();
            var7.id = var6;
            var7.track = var4[var5];
            var7.volume = 1.0F;
            var7.loopCount = 1;
            var7.weight = 1.0F;
            var3.children[var5] = var6;
            var2.put(var7, Collections.emptyList());
         }
      }

      class="kw">return var3;
   }

   @Nonnull
   @Override
   class="kw">public String[] getChildIds() {
      class="kw">return this.children != null ? this.children : new String[0];
   }

   @Nonnull
   class="kw">public com.hypixel.hytale.protocol.MusicContainer toPacket() {
      com.hypixel.hytale.protocol.RandomMusicContainer var1 = new com.hypixel.hytale.protocol.RandomMusicContainer();
      this.fillBasePacketFields(var1);
      var1.mode = this.mode;
      var1.avoidRepeatCount = this.avoidRepeatCount;
      if (this.children != null && this.children.length > 0) {
         IndexedAssetMap var2 = MusicContainer.getAssetMap();
         var1.children = new int[this.children.length];

         for (int var3 = 0; var3 < this.children.length; var3++) {
            var1.children[var3] = var2.getIndex(this.children[var3]);
         }
      }

      class="kw">return var1;
   }
}