PlayerEffectApplyCommand class

Пакет: com.hypixel.hytale.server.core.command.commands.player.effect

Файл: com/hypixel/hytale/server/core/command/commands/player/effect/PlayerEffectApplyCommand.java

extends: AbstractPlayerCommand

Поля (17)

МодификаторыТипИмя
final float DEFAULT_DURATION
private static final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD
private final DefaultArg<Float> durationArg
private final RequiredArg<EntityEffect> effectArg
private final RequiredArg<PlayerRef> playerArg
PlayerRef var2
Ref var3
Store var4
Player var4
World var5
PlayerRef var5
EffectControllerComponent var6
EffectControllerComponent var6
EntityEffect var7
EntityEffect var7
Float var8
Float var8

Методы (5)

МодификаторыВозвратСигнатура
PlayerEffectApplyOtherCommand PlayerEffectApplyOtherCommand()
protected void executeSyncprotected void executeSync(@Nonnull CommandContext var1)
if if(var4 == null)
abstract super super("apply", "server.commands.player.effect.apply.desc")
abstract super super("server.commands.player.effect.apply.other.desc")

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.command.commands.player.effect;

class="kw">import com.hypixel.hytale.codec.validation.Validators;
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.entityeffect.config.EntityEffect;
class="kw">import com.hypixel.hytale.server.core.asset.type.entityeffect.config.OverlapBehavior;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
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.AbstractPlayerCommand;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
class="kw">import com.hypixel.hytale.server.core.entity.effect.EffectControllerComponent;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.permissions.HytalePermissions;
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 PlayerEffectApplyCommand class="kw">extends AbstractPlayerCommand {
   class="kw">private class="kw">static class="kw">final float DEFAULT_DURATION = 100.0F;
   @Nonnull
   class="kw">private class="kw">final RequiredArg<EntityEffect> effectArg = this.withRequiredArg("effect", "server.commands.player.effect.apply.effect.desc", ArgTypes.EFFECT_ASSET);
   @Nonnull
   class="kw">private class="kw">final DefaultArg<Float> durationArg = this.withDefaultArg(
         "duration", "server.commands.player.effect.apply.duration.desc", ArgTypes.FLOAT, 100.0F, "server.commands.entity.effect.duration"
      )
      .addValidator(Validators.greaterThan(0.0F));

   class="kw">public PlayerEffectApplyCommand() {
      super("apply", "server.commands.player.effect.apply.desc");
      this.requirePermission(HytalePermissions.fromCommand("player.effect.apply.self"));
      this.setPermissionGroups("hytale:Builder");
      this.addUsageVariant(new PlayerEffectApplyCommand.PlayerEffectApplyOtherCommand());
   }

   @Override
   class="kw">protected void execute(
      @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
   ) {
      EffectControllerComponent var6 = var2.getComponent(var3, EffectControllerComponent.getComponentType());
      assert var6 != null;
      EntityEffect var7 = this.effectArg.get(var1);
      Float var8 = this.durationArg.get(var1);
      var6.addEffect(var3, var7, var8, OverlapBehavior.OVERWRITE, var2);
      var1.sendMessage(Message.translation("server.commands.player.effect.apply.success.self").param("effect", var7.getId()).param("duration", var8));
   }

   class="kw">private class="kw">static class PlayerEffectApplyOtherCommand class="kw">extends CommandBase {
      class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD = Message.translation("server.commands.errors.playerNotInWorld");
      @Nonnull
      class="kw">private class="kw">final RequiredArg<PlayerRef> playerArg = this.withRequiredArg("player", "server.commands.argtype.player.desc", ArgTypes.PLAYER_REF);
      @Nonnull
      class="kw">private class="kw">final RequiredArg<EntityEffect> effectArg = this.withRequiredArg(
         "effect", "server.commands.player.effect.apply.effect.desc", ArgTypes.EFFECT_ASSET
      );
      @Nonnull
      class="kw">private class="kw">final DefaultArg<Float> durationArg = this.withDefaultArg(
            "duration", "server.commands.player.effect.apply.duration.desc", ArgTypes.FLOAT, 100.0F, "server.commands.entity.effect.duration"
         )
         .addValidator(Validators.greaterThan(0.0F));

      PlayerEffectApplyOtherCommand() {
         super("server.commands.player.effect.apply.other.desc");
         this.requirePermission(HytalePermissions.fromCommand("player.effect.apply.other"));
         this.setPermissionGroups("hytale:WorldEditor");
      }

      @Override
      class="kw">protected void executeSync(@Nonnull CommandContext var1) {
         PlayerRef var2 = this.playerArg.get(var1);
         Ref var3 = var2.getReference();
         if (var3 != null && var3.isValid()) {
            Store var4 = var3.getStore();
            World var5 = var4.getExternalData().getWorld();
            var5.execute(
               () -> {
                  Player var4 = var4.getComponent(var3, Player.getComponentType());
                  if (var4 == null) {
                     var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
                  } else {
                     PlayerRef var5 = var4.getComponent(var3, PlayerRef.getComponentType());
                     assert var5 != null;
                     EffectControllerComponent var6 = var4.getComponent(var3, EffectControllerComponent.getComponentType());
                     assert var6 != null;
                     EntityEffect var7 = this.effectArg.get(var1);
                     Float var8 = this.durationArg.get(var1);
                     var6.addEffect(var3, var7, var8, OverlapBehavior.OVERWRITE, var4);
                     var1.sendMessage(
                        Message.translation("server.commands.player.effect.apply.success.other")
                           .param("username", var5.getUsername())
                           .param("effect", var7.getId())
                           .param("duration", var8)
                     );
                  }
               }
            );
         } else {
            var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
         }
      }
   }
}