Scope enum

Пакет: com.hypixel.hytale.builtin.audio.commands

Файл: com/hypixel/hytale/builtin/audio/commands/AudioStateSetCommand.java

Поля (1)

МодификаторыТипИмя
World, Self, Players

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.audio.components.AudioStateComponent;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.protocol.AudioStateAuthority;
class="kw">import com.hypixel.hytale.protocol.FadeCurve;
class="kw">import com.hypixel.hytale.protocol.StateTransition;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.asset.type.audiostate.config.AudioState;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractWorldCommand;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class AudioStateSetCommand class="kw">extends AbstractWorldCommand {
   @Nonnull
   class="kw">private class="kw">final RequiredArg<AudioState> audioStateArg = this.withRequiredArg(
      "audioState", "server.commands.audio.state.set.arg.audiostate.desc", ArgTypes.AUDIO_STATE_ASSET
   );
   @Nonnull
   class="kw">private class="kw">final RequiredArg<String> valueArg = this.withRequiredArg("value", "server.commands.audio.state.set.arg.value.desc", ArgTypes.STRING);
   @Nonnull
   class="kw">private class="kw">final OptionalArg<Float> fadeMsArg = this.withOptionalArg("fadeMs", "server.commands.audio.state.set.arg.fadems.desc", ArgTypes.FLOAT);
   @Nonnull
   class="kw">private class="kw">final OptionalArg<FadeCurve> curveArg = this.withOptionalArg(
      "curve", "server.commands.audio.state.set.arg.curve.desc", ArgTypes.forEnum("FadeCurve", FadeCurve.class)
   );
   @Nonnull
   class="kw">private class="kw">final OptionalArg<AudioStateSetCommand.Scope> scopeArg = this.withOptionalArg(
      "scope", "server.commands.audio.state.set.arg.scope.desc", ArgTypes.forEnum("Scope", AudioStateSetCommand.Scope.class)
   );
   @Nonnull
   class="kw">private class="kw">final OptionalArg<List<PlayerRef>> playersArg = this.withListOptionalArg(
      "players", "server.commands.audio.state.set.arg.players.desc", ArgTypes.PLAYER_REF
   );

   class="kw">public AudioStateSetCommand() {
      super("set", "server.commands.audio.state.set.desc");
   }

   @Override
   class="kw">protected void execute(@Nonnull CommandContext var1, @Nonnull World var2, @Nonnull Store<EntityStore> var3) {
      AudioState var4 = this.audioStateArg.get(var1);
      if (var4.getAuthority() != AudioStateAuthority.Server) {
         var1.sendMessage(Message.translation("server.commands.audio.state.set.error.clientAuthority").param("audioState", var4.getId()));
      } else {
         String var5 = this.valueArg.get(var1);
         String[] var6 = var4.getValues();
         int var7 = -1;
         if (var6 != null) {
            for (int var8 = 0; var8 < var6.length; var8++) {
               if (var6[var8].equals(var5)) {
                  var7 = var8;
                  break;
               }
            }
         }

         if (var7 < 0) {
            var1.sendMessage(Message.translation("server.commands.audio.state.set.error.unknownValue").param("audioState", var4.getId()).param("value", var5));
         } else {
            int var18 = AudioState.getAssetMap().getIndex(var4.getId());
            Float var9 = this.fadeMsArg.provided(var1) ? this.fadeMsArg.get(var1) : null;
            FadeCurve var10 = this.curveArg.provided(var1) ? this.curveArg.get(var1) : null;
            StateTransition var11 = buildTransitionOverride(var9, var10);
            AudioStateSetCommand.Scope var12 = this.scopeArg.provided(var1) ? this.scopeArg.get(var1) : AudioStateSetCommand.Scope.World;
            int var13 = 0;
            class="kw">switch (var12) {
               case World:
                  for (PlayerRef var21 : var2.getPlayerRefs()) {
                     Ref var22 = var21.getReference();
                     if (var22 != null && applyToPlayer(var3, var22, var18, var7, var11)) {
                        var13++;
                     }
                  }
                  break;
               case Self:
                  Ref var19 = var1.senderAsPlayerRef();
                  if (var19 == null) {
                     var1.sendMessage(Message.translation("server.commands.audio.state.set.error.noSender"));
                     class="kw">return;
                  }

                  if (applyToPlayer(var3, var19, var18, var7, var11)) {
                     var13++;
                  }
                  break;
               case Players:
                  if (!this.playersArg.provided(var1)) {
                     var1.sendMessage(Message.translation("server.commands.audio.state.set.error.playersRequired"));
                     class="kw">return;
                  }

                  List var14 = this.playersArg.get(var1);
                  if (var14 == null || var14.isEmpty()) {
                     var1.sendMessage(Message.translation("server.commands.audio.state.set.error.playersRequired"));
                     class="kw">return;
                  }

                  for (PlayerRef var16 : var14) {
                     if (var16 != null) {
                        Ref var17 = var16.getReference();
                        if (var17 != null && applyToPlayer(var3, var17, var18, var7, var11)) {
                           var13++;
                        }
                     }
                  }
            }

            var1.sendMessage(
               Message.translation("server.commands.audio.state.set.success")
                  .param("audioState", var4.getId())
                  .param("value", var5)
                  .param("count", Integer.toString(var13))
            );
         }
      }
   }

   class="kw">private class="kw">static boolean applyToPlayer(@Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1, int var2, int var3, @Nullable StateTransition var4) {
      AudioStateComponent var5 = var0.getComponent(var1, AudioStateComponent.getComponentType());
      if (var5 == null) {
         class="kw">return false;
      }

      var5.setValue(var2, var3, var4);
      class="kw">return true;
   }

   @Nullable
   class="kw">private class="kw">static StateTransition buildTransitionOverride(@Nullable Float var0, @Nullable FadeCurve var1) {
      if (var0 == null && var1 == null) {
         class="kw">return null;
      }

      StateTransition var2 = new StateTransition();
      var2.fromValueIndex = -1;
      var2.toValueIndex = -1;
      var2.durationMs = var0 != null ? var0 : 0.0F;
      var2.curve = var1 != null ? var1 : FadeCurve.Linear;
      var2.syncTo = null;
      class="kw">return var2;
   }

   class="kw">public enum Scope {
      World,
      Self,
      Players;

      Scope() {
      }
   }
}