AmbienceEmitterAddCommand class

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

Файл: com/hypixel/hytale/builtin/ambience/commands/AmbienceEmitterAddCommand.java

extends: AbstractPlayerCommand

Поля (10)

МодификаторыТипИмя
break
AmbientEmitterComponent var14
TransformComponent var15
Model var16
Ref var17
TransformComponent var6
Holder var7
SoundEvent var8
boolean var9
var9

Методы (4)

МодификаторыВозвратСигнатура
abstract throw new GeneralCommandExceptionthrow new GeneralCommandException(MESSAGE_SERVER_COMMANDS_ERRORS_PLAYER_ONLY)
if if(var6 != null)
if if(!var9)
abstract super super("add", "server.commands.ambience.emitter.add.desc")

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.ambience.AmbiencePlugin;
class="kw">import com.hypixel.hytale.builtin.ambience.components.AmbientEmitterComponent;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.Model;
class="kw">import com.hypixel.hytale.server.core.asset.type.soundevent.config.SoundEvent;
class="kw">import com.hypixel.hytale.server.core.asset.type.soundevent.config.SoundEventLayer;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandContext;
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.AssetArgumentType;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
class="kw">import com.hypixel.hytale.server.core.command.system.exceptions.GeneralCommandException;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.entity.nameplate.Nameplate;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.HiddenFromAdventurePlayers;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.ModelComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.PersistentModel;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
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 javax.annotation.Nonnull;

class="kw">public class AmbienceEmitterAddCommand class="kw">extends AbstractPlayerCommand {
   @Nonnull
   class="kw">private class="kw">static class="kw">final AssetArgumentType<SoundEvent, ?> SOUND_EVENT_ASSET_TYPE = new AssetArgumentType(
      "server.commands.ambience.emitter.add.arg.soundEvent.name", SoundEvent.class, "server.commands.ambience.emitter.add.arg.soundEvent.usage"
   );
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_SERVER_COMMANDS_ERRORS_PLAYER_ONLY = Message.translation("server.commands.errors.playerOnly");
   @Nonnull
   class="kw">private class="kw">final RequiredArg<SoundEvent> soundEventArg = this.withRequiredArg(
      "soundEvent", "server.commands.ambience.emitter.add.arg.soundEvent.desc", SOUND_EVENT_ASSET_TYPE
   );

   class="kw">public AmbienceEmitterAddCommand() {
      super("add", "server.commands.ambience.emitter.add.desc");
   }

   @Override
   class="kw">protected void execute(
      @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
   ) {
      if (!var1.isPlayer()) {
         throw new GeneralCommandException(MESSAGE_SERVER_COMMANDS_ERRORS_PLAYER_ONLY);
      }

      TransformComponent var6 = var2.getComponent(var3, TransformComponent.getComponentType());
      if (var6 != null) {
         Holder var7 = EntityStore.REGISTRY.newHolder();
         SoundEvent var8 = this.soundEventArg.get(var1);
         boolean var9 = false;

         for (SoundEventLayer var13 : var8.getLayers()) {
            if (var13.isLooping()) {
               var9 = true;
               break;
            }
         }

         if (!var9) {
            var1.sendMessage(Message.translation("server.commands.ambience.emitter.add.notLooping").param("soundEventId", var8.getId()));
         } else {
            AmbientEmitterComponent var14 = new AmbientEmitterComponent();
            var14.setSoundEventId(var8.getId());
            var7.addComponent(AmbientEmitterComponent.getComponentType(), var14);
            TransformComponent var15 = var6.clone();
            var7.addComponent(TransformComponent.getComponentType(), var15);
            var7.addComponent(Nameplate.getComponentType(), new Nameplate(var8.getId()));
            var7.ensureComponent(UUIDComponent.getComponentType());
            var7.ensureComponent(HiddenFromAdventurePlayers.getComponentType());
            Model var16 = AmbiencePlugin.get().getAmbientEmitterModel();
            var7.addComponent(ModelComponent.getComponentType(), new ModelComponent(var16));
            var7.addComponent(PersistentModel.getComponentType(), new PersistentModel(var16.toReference()));
            Ref var17 = var2.addEntity(var7, AddReason.SPAWN);
            if (var17 != null && var17.isValid()) {
               var1.sendMessage(Message.translation("server.commands.ambience.emitter.add.added").param("soundEventId", var8.getId()));
            } else {
               var1.sendMessage(Message.translation("server.commands.ambience.emitter.add.failed").param("soundEventId", var8.getId()));
            }
         }
      }
   }
}