AbstractTargetEntityCommand class

Пакет: com.hypixel.hytale.server.core.command.system.basecommands

Файл: com/hypixel/hytale/server/core/command/system/basecommands/AbstractTargetEntityCommand.java

extends: AbstractAsyncCommand

Поля (31)

МодификаторыТипИмя
final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD
return
return
return
return
return
return
return
return
List var10
SpatialResource var11
SpatialResource var12
PlayerRef var13
Ref var14
Ref var15
Ref var16
Ref var17
World var2
var2
var2
Ref var3
Store var4
Object var4
var4
var4
var4
var4
Ref var5
TransformComponent var6
double var7
Vector3d var9

Методы (6)

МодификаторыВозвратСигнатура
abstract abstract void executevoid execute(@Nonnull CommandContext var1, @Nonnull List<Ref<EntityStore>> var2, @Nonnull World var3, @Nonnull Store<EntityStore> var4)
if if(var6 == null)
if if(var17 == null)
abstract super super(var1, var2)
abstract super super(var1, var2, var3)
abstract super super(var1)

Исходный код

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

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.component.spatial.SpatialResource;
class="kw">import com.hypixel.hytale.server.core.Message;
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.types.ArgTypes;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.types.EntityWrappedArg;
class="kw">import com.hypixel.hytale.server.core.modules.entity.EntityModule;
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 com.hypixel.hytale.server.core.util.TargetUtil;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectLists;
class="kw">import it.unimi.dsi.fastutil.objects.ReferenceArrayList;
class="kw">import it.unimi.dsi.fastutil.objects.ReferenceLists;
class="kw">import java.util.List;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;

class="kw">public class="kw">abstract class AbstractTargetEntityCommand class="kw">extends AbstractAsyncCommand {
   class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD = Message.translation("server.commands.errors.playerNotInWorld");
   class="kw">private class="kw">static class="kw">final Message MESSAGE_GENERAL_NO_ENTITY_IN_VIEW = Message.translation("server.general.noEntityInView");
   @Nonnull
   class="kw">private class="kw">final OptionalArg<World> worldArg = this.withOptionalArg("world", "server.commands.worldthread.arg.desc", ArgTypes.WORLD);
   @Nonnull
   class="kw">private class="kw">final OptionalArg<Double> radiusArg = this.withOptionalArg("radius", "server.commands.entity.radius.desc", ArgTypes.DOUBLE)
      .addValidator(Validators.greaterThan(0.0));
   @Nonnull
   class="kw">private class="kw">final OptionalArg<PlayerRef> playerArg = this.withOptionalArg("player", "server.commands.argtype.player.desc", ArgTypes.PLAYER_REF);
   @Nonnull
   class="kw">private class="kw">final EntityWrappedArg entityArg = this.withOptionalArg("entity", "server.commands.entity.entity.desc", ArgTypes.ENTITY_ID);

   class="kw">public AbstractTargetEntityCommand(@Nonnull String var1, @Nonnull String var2) {
      super(var1, var2);
   }

   class="kw">public AbstractTargetEntityCommand(@Nonnull String var1, @Nonnull String var2, boolean var3) {
      super(var1, var2, var3);
   }

   class="kw">public AbstractTargetEntityCommand(@Nonnull String var1) {
      super(var1);
   }

   @Nonnull
   @Override
   class="kw">protected class="kw">final CompletableFuture<Void> executeAsync(@Nonnull CommandContext var1) {
      World var2;
      if (this.worldArg.provided(var1)) {
         var2 = this.worldArg.get(var1);
      } else {
         if (!var1.isPlayer()) {
            var1.sendMessage(Message.translation("server.commands.errors.playerOrArg").param("option", "world"));
            class="kw">return CompletableFuture.completedFuture(null);
         }

         Ref var3 = var1.senderAsPlayerRef();
         if (var3 == null || !var3.isValid()) {
            var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
            class="kw">return CompletableFuture.completedFuture(null);
         }

         var2 = var3.getStore().getExternalData().getWorld();
      }

      Store var4 = var2.getEntityStore().getStore();
      class="kw">return this.runAsync(var1, () -> {
         Object var4;
         if (this.radiusArg.provided(var1)) {
            if (!var1.isPlayer()) {
               var1.sendMessage(Message.translation("server.commands.errors.playerOrArg").param("option", "radius"));
               class="kw">return;
            }

            Ref var5 = var1.senderAsPlayerRef();
            if (var5 == null || !var5.isValid()) {
               var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
               class="kw">return;
            }

            TransformComponent var6 = var4.getComponent(var5, TransformComponent.getComponentType());
            if (var6 == null) {
               var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
               class="kw">return;
            }

            double var7 = this.radiusArg.get(var1);
            Vector3d var9 = var6.getPosition();
            var4 = new ReferenceArrayList();
            List var10 = SpatialResource.getThreadLocalReferenceList();
            SpatialResource var11 = var4.getResource(EntityModule.get().getEntitySpatialResourceType());
            var11.getSpatialStructure().collect(var9, var7, var10);
            var4.addAll(var10);
            SpatialResource var12 = var4.getResource(EntityModule.get().getPlayerSpatialResourceType());
            var12.getSpatialStructure().collect(var9, var7, var10);
            var4.addAll(var10);
         } else if (this.playerArg.provided(var1)) {
            PlayerRef var13 = this.playerArg.get(var1);
            Ref var16 = var13.getReference();
            if (var16 == null || !var16.isValid()) {
               var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
               class="kw">return;
            }

            var4 = ReferenceLists.singleton(var16);
         } else if (this.entityArg.provided(var1)) {
            Ref var14 = this.entityArg.get(var4, var1);
            if (var14 == null || !var14.isValid()) {
               var1.sendMessage(MESSAGE_GENERAL_NO_ENTITY_IN_VIEW);
               class="kw">return;
            }

            var4 = ObjectLists.singleton(var14);
         } else {
            if (!var1.isPlayer()) {
               var1.sendMessage(Message.translation("server.commands.errors.playerOrArg").param("option", "entity"));
               class="kw">return;
            }

            Ref var15 = var1.senderAsPlayerRef();
            if (var15 == null || !var15.isValid()) {
               var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
               class="kw">return;
            }

            Ref var17 = TargetUtil.getTargetEntity(var15, var4);
            if (var17 == null) {
               var1.sendMessage(MESSAGE_GENERAL_NO_ENTITY_IN_VIEW);
               class="kw">return;
            }

            var4 = ObjectLists.singleton(var17);
         }

         this.execute(var1, var4, var2, var4);
      }, var2);
   }

   class="kw">protected class="kw">abstract void execute(@Nonnull CommandContext var1, @Nonnull List<Ref<EntityStore>> var2, @Nonnull World var3, @Nonnull Store<EntityStore> var4);
}