LeaveCommand class

Пакет: com.hypixel.hytale.server.flock.commands

Файл: com/hypixel/hytale/server/flock/commands/NPCFlockCommand.java

extends: AbstractPlayerCommand

Поля (1)

МодификаторыТипИмя
int var6

Методы (2)

МодификаторыВозвратСигнатура
protected void executeprotected void execute(@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5)
abstract super super("leave", "server.commands.npc.flock.leave.desc")

Исходный код

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

class="kw">import com.hypixel.hytale.component.ComponentType;
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.math.vector.Rotation3f;
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.basecommands.AbstractCommandCollection;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.HeadRotation;
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.flock.FlockMembership;
class="kw">import com.hypixel.hytale.server.flock.FlockMembershipSystems;
class="kw">import com.hypixel.hytale.server.flock.FlockPlugin;
class="kw">import com.hypixel.hytale.server.npc.NPCPlugin;
class="kw">import com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import com.hypixel.hytale.server.npc.util.NPCPhysicsMath;
class="kw">import java.util.List;
class="kw">import java.util.function.BiPredicate;
class="kw">import java.util.function.Predicate;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;

class="kw">public class NPCFlockCommand class="kw">extends AbstractCommandCollection {
   class="kw">private class="kw">static class="kw">final double ENTITY_IN_VIEW_DISTANCE = 8.0;
   class="kw">private class="kw">static class="kw">final float ENTITY_IN_VIEW_ANGLE = 30.0F;
   class="kw">private class="kw">static class="kw">final int ENTITY_IN_VIEW_HEIGHT = 2;

   class="kw">public NPCFlockCommand() {
      super("flock", "server.commands.npc.flock.desc");
      this.addSubCommand(new NPCFlockCommand.LeaveCommand());
      this.addSubCommand(new NPCFlockCommand.GrabCommand());
      this.addSubCommand(new NPCFlockCommand.JoinCommand());
      this.addSubCommand(new NPCFlockCommand.PlayerLeaveCommand());
   }

   class="kw">public class="kw">static int forNpcEntitiesInViewCone(
      @Nonnull Ref<EntityStore> var0, @Nonnull Store<EntityStore> var1, @Nonnull BiPredicate<Ref<EntityStore>, NPCEntity> var2
   ) {
      ComponentType var3 = TransformComponent.getComponentType();
      TransformComponent var4 = var1.getComponent(var0, var3);
      assert var4 != null;
      Vector3d var5 = var4.getPosition();
      HeadRotation var6 = var1.getComponent(var0, HeadRotation.getComponentType());
      assert var6 != null;
      Rotation3f var7 = var6.getRotation();
      float var8 = var7.yaw();
      double var9 = var5.x();
      double var11 = var5.y();
      double var13 = var5.z();
      SpatialResource var15 = var1.getResource(NPCPlugin.get().getNpcSpatialResource());
      List var16 = SpatialResource.getThreadLocalReferenceList();
      var15.getSpatialStructure().collect(var5, 8.0, var16);
      ComponentType var17 = NPCEntity.getComponentType();
      assert var17 != null;
      int var18 = 0;

      for (Ref var20 : var16) {
         NPCEntity var21 = var1.getComponent(var20, var17);
         assert var21 != null;
         TransformComponent var22 = var1.getComponent(var20, var3);
         assert var22 != null;
         Vector3d var23 = var22.getPosition();
         if (Math.abs(var23.y() - var11) < 2.0
            && NPCPhysicsMath.inViewSector(var9, var13, var8, (float) (Math.PI / 6), var23.x(), var23.z())
            && var2.test(var20, var21)) {
            var18++;
         }
      }

      class="kw">return var18;
   }

   class="kw">public class="kw">static boolean anyEntityInViewCone(@Nonnull Ref<EntityStore> var0, @Nonnull Store<EntityStore> var1, @Nonnull Predicate<Ref<EntityStore>> var2) {
      ComponentType var3 = TransformComponent.getComponentType();
      TransformComponent var4 = var1.getComponent(var0, var3);
      assert var4 != null;
      Vector3d var5 = var4.getPosition();
      HeadRotation var6 = var1.getComponent(var0, HeadRotation.getComponentType());
      assert var6 != null;
      Rotation3f var7 = var6.getRotation();
      float var8 = var7.yaw();
      double var9 = var5.x();
      double var11 = var5.y();
      double var13 = var5.z();
      SpatialResource var15 = var1.getResource(NPCPlugin.get().getNpcSpatialResource());
      List var16 = SpatialResource.getThreadLocalReferenceList();
      var15.getSpatialStructure().ordered(var5, 8.0, var16);

      for (Ref var18 : var16) {
         TransformComponent var19 = var1.getComponent(var18, var3);
         assert var19 != null;
         Vector3d var20 = var19.getPosition();
         if (Math.abs(var20.y() - var11) < 2.0
            && NPCPhysicsMath.inViewSector(var9, var13, var8, (float) (Math.PI / 6), var20.x(), var20.z())
            && var2.test(var18)) {
            class="kw">return true;
         }
      }

      class="kw">return false;
   }

   class="kw">public class="kw">static class GrabCommand class="kw">extends AbstractPlayerCommand {
      class="kw">public GrabCommand() {
         super("grab", "server.commands.npc.flock.grab.desc");
      }

      @Override
      class="kw">protected void execute(
         @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
      ) {
         int var6 = NPCFlockCommand.forNpcEntitiesInViewCone(var3, var2, (var2x, var3x) -> {
            FlockMembership var4 = var2.getComponent(var2x, FlockMembership.getComponentType());
            if (var4 == null) {
               Ref var5 = FlockPlugin.getFlockReference(var3, var2);
               if (var5 == null) {
                  var5 = FlockPlugin.createFlock(var2, var3x.getRole());
                  FlockMembershipSystems.join(var3, var5, var2);
               }

               FlockMembershipSystems.join(var2x, var5, var2);
               class="kw">return true;
            } else {
               class="kw">return false;
            }
         });
         var1.sendMessage(Message.translation("server.commands.npc.flock.addedToFlock").param("count", var6));
      }
   }

   class="kw">public class="kw">static class JoinCommand class="kw">extends AbstractPlayerCommand {
      class="kw">public JoinCommand() {
         super("join", "server.commands.npc.flock.join.desc");
      }

      @Override
      class="kw">protected void execute(
         @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
      ) {
         boolean var6 = NPCFlockCommand.anyEntityInViewCone(var3, var2, var2x -> {
            Ref var3 = FlockPlugin.getFlockReference(var2x, var2);
            if (var3 != null) {
               FlockMembershipSystems.join(var3, var3, var2);
               class="kw">return true;
            } else {
               class="kw">return false;
            }
         });
         if (!var6) {
            var1.sendMessage(Message.translation("server.commands.npc.flock.resultJoinFlock").param("status", "Failed"));
         } else {
            var5.execute(() -> {
               String var3 = FlockPlugin.isFlockMember(var3, var2) ? "Succeeded" : "Failed";
               var1.sendMessage(Message.translation("server.commands.npc.flock.resultJoinFlock").param("status", var3));
            });
         }
      }
   }

   class="kw">public class="kw">static class LeaveCommand class="kw">extends AbstractPlayerCommand {
      class="kw">public LeaveCommand() {
         super("leave", "server.commands.npc.flock.leave.desc");
      }

      @Override
      class="kw">protected void execute(
         @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
      ) {
         int var6 = NPCFlockCommand.forNpcEntitiesInViewCone(var3, var2, (var1x, var2x) -> {
            var2.tryRemoveComponent(var1x, FlockMembership.getComponentType());
            class="kw">return true;
         });
         var1.sendMessage(Message.translation("server.commands.npc.flock.removedFromFlock").param("count", var6));
      }
   }

   class="kw">public class="kw">static class PlayerLeaveCommand class="kw">extends AbstractPlayerCommand {
      @Nonnull
      class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_NPC_FLOCK_LEFT_FLOCK = Message.translation("server.commands.npc.flock.leftFlock");
      @Nonnull
      class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_NPC_FLOCK_FAILED_LEAVE_FLOCK = Message.translation("server.commands.npc.flock.failedLeaveFlock");

      class="kw">public PlayerLeaveCommand() {
         super("playerleave", "server.commands.npc.flock.playerleave.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 (var2.removeComponentIfExists(var3, FlockMembership.getComponentType())) {
            var1.sendMessage(MESSAGE_COMMANDS_NPC_FLOCK_LEFT_FLOCK);
         } else {
            var1.sendMessage(MESSAGE_COMMANDS_NPC_FLOCK_FAILED_LEAVE_FLOCK);
         }
      }
   }
}