NPCRunTestsCommand class

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

Файл: com/hypixel/hytale/server/npc/commands/NPCRunTestsCommand.java

extends: AbstractPlayerCommand

Поля (51)

МодификаторыТипИмя
continue
private final IntSet failedRoles
private final IntList flockSizes
private int index
private final IntList npcRoles
return
return
return
return
return
private UUID targetUUID
NPCRunTestsCommand.NPCTestData var1
TransformComponent var10
PlayerRef var11
var12
UUIDComponent var12
int var13
var13
String var13
int var14
Ref var16
int var18
Ref var2
ReferenceArrayList var3
NPCPlugin var3
Ref var4
EntityGroup var4
Message var4
Vector3d var5
var5
var5
ObjectListIterator var5
NPCRunTestsCommand.NPCTestData var6
Rotation3f var6
var6
var6
Ref var6
Pair var6
int var6
TransformComponent var7
TransformComponent var7
Ref var7
String var7
String[] var8
var8
var8
TransformComponent var8
NPCEntity var8
PlayerRef var8
String var9
int var9

Методы (24)

МодификаторыВозвратСигнатура
public NPCTestDatapublic NPCTestData()
static void cleanupNPCvoid cleanupNPC(@Nonnull Ref<EntityStore> var0, @Nonnull Store<EntityStore> var1)
abstract cleanupNPC cleanupNPC(var16, var2)
abstract cleanupNPC cleanupNPC(var4, var2)
public Component<EntityStore> clonepublic Component<EntityStore> clone()
for for(String var12 : var8)
abstract for for(int var5 = 0; var5 < var1.npcRoles.size()
public static ComponentType<EntityStore, NPCRunTestsCommand.NPCTestData> getComponentTypepublic static ComponentType<EntityStore, NPCRunTestsCommand.NPCTestData> getComponentType()
if if(var16 != null)
if if(var14 > 0)
if if(var18 == Integer.MIN_VALUE)
if if(var6.targetUUID == null)
if if(var4 != null)
if if(var4 != null)
if if(var2 != null)
if if(var9 > 1)
static void reportResultsvoid reportResults(@Nonnull Ref<EntityStore> var0, @Nonnull NPCRunTestsCommand.NPCTestData var1, @Nonnull Store<EntityStore> var2)
abstract reportResults reportResults(var3, var6, var2)
abstract reportResults reportResults(var1, var0, var2)
static void setNextRolevoid setNextRole(@Nonnull NPCRunTestsCommand.NPCTestData var0, @Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull World var3)
abstract setNextRole setNextRole(var6, var3, var2, var5)
static void spawnNPCvoid spawnNPC(@Nonnull Ref<EntityStore> var0, @Nonnull NPCRunTestsCommand.NPCTestData var1, int var2, @Nonnull Vector3d var3, @Nullable Rotation3f var4, @Nonnull Store<EntityStore> var5)
abstract spawnNPC spawnNPC(var1, var0, var0.index, var5, var6, var2)
abstract super super("runtests", "server.commands.npc.runtests.desc")

Исходный код

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

class="kw">import com.hypixel.hytale.component.Component;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.RemoveReason;
class="kw">import com.hypixel.hytale.component.Store;
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.arguments.system.FlagArg;
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.basecommands.AbstractPlayerCommand;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.entity.group.EntityGroup;
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.FlockPlugin;
class="kw">import com.hypixel.hytale.server.npc.NPCPlugin;
class="kw">import com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import it.unimi.dsi.fastutil.Pair;
class="kw">import it.unimi.dsi.fastutil.ints.IntArrayList;
class="kw">import it.unimi.dsi.fastutil.ints.IntList;
class="kw">import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
class="kw">import it.unimi.dsi.fastutil.ints.IntSet;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectListIterator;
class="kw">import it.unimi.dsi.fastutil.objects.ReferenceArrayList;
class="kw">import java.util.UUID;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class NPCRunTestsCommand class="kw">extends AbstractPlayerCommand {
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_NPC_RUN_TESTS_SPECIFY_ROLES = Message.translation("server.commands.npc.runtests.specifyroles");
   @Nonnull
   class="kw">private class="kw">final OptionalArg<String> rolesArg = this.withOptionalArg("roles", "server.commands.npc.runtests.roles.desc", ArgTypes.STRING);
   @Nonnull
   class="kw">private class="kw">final FlagArg presetArg = this.withFlagArg("preset", "server.commands.npc.runtests.preset.desc");
   @Nonnull
   class="kw">private class="kw">final FlagArg passArg = this.withFlagArg("pass", "server.commands.npc.runtests.pass.desc");
   @Nonnull
   class="kw">private class="kw">final FlagArg failArg = this.withFlagArg("fail", "server.commands.npc.runtests.fail.desc");
   @Nonnull
   class="kw">private class="kw">final FlagArg abortArg = this.withFlagArg("abort", "server.commands.npc.runtests.abort.desc");

   class="kw">public NPCRunTestsCommand() {
      super("runtests", "server.commands.npc.runtests.desc");
   }

   @Override
   class="kw">protected void execute(
      @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
   ) {
      NPCRunTestsCommand.NPCTestData var6 = var2.ensureAndGetComponent(var3, NPCRunTestsCommand.NPCTestData.getComponentType());
      TransformComponent var7 = var2.getComponent(var3, TransformComponent.getComponentType());
      assert var7 != null;
      if (!var6.npcRoles.isEmpty()) {
         if (this.passArg.get(var1)) {
            setNextRole(var6, var3, var2, var5);
            class="kw">return;
         }

         if (this.failArg.get(var1)) {
            var6.failedRoles.add(var6.npcRoles.getInt(var6.index));
            setNextRole(var6, var3, var2, var5);
            class="kw">return;
         }

         if (this.abortArg.get(var1)) {
            reportResults(var3, var6, var2);
            Ref var16 = var5.getEntityRef(var6.targetUUID);
            if (var16 != null) {
               cleanupNPC(var16, var2);
            }

            var2.removeComponent(var3, NPCRunTestsCommand.NPCTestData.getComponentType());
            class="kw">return;
         }
      }

      String[] var8;
      if (this.presetArg.get(var1)) {
         var8 = NPCPlugin.get().getPresetCoverageTestNPCs();
      } else {
         if (!this.rolesArg.provided(var1)) {
            var1.sendMessage(MESSAGE_COMMANDS_NPC_RUN_TESTS_SPECIFY_ROLES);
            var2.removeComponent(var3, NPCRunTestsCommand.NPCTestData.getComponentType());
            class="kw">return;
         }

         String var9 = this.rolesArg.get(var1);
         if (var9 == null || var9.isEmpty()) {
            var1.sendMessage(MESSAGE_COMMANDS_NPC_RUN_TESTS_SPECIFY_ROLES);
            var2.removeComponent(var3, NPCRunTestsCommand.NPCTestData.getComponentType());
            class="kw">return;
         }

         var8 = var9.split(",", 0);
      }

      for (String var12 : var8) {
         int var13;
         try {
            int var14 = var12.indexOf(35);
            var13 = var14 < 0 ? 1 : Integer.parseInt(var12.substring(var14 + 1));
            if (var14 > 0) {
               var12 = var12.substring(0, var14);
            }
         } catch (NumberFormatException var15) {
            var1.sendMessage(Message.translation("server.commands.npc.runtests.invalidflocksize").param("role", var12));
            class="kw">continue;
         }

         int var18 = NPCPlugin.get().getIndex(var12);
         if (var18 == Integer.MIN_VALUE) {
            var1.sendMessage(Message.translation("server.commands.npc.spawn.templateNotFound").param("template", var12));
         } else {
            var6.npcRoles.add(var18);
            var6.flockSizes.add(var13);
         }
      }

      if (var6.targetUUID == null) {
         spawnNPC(var3, var6, 0, var7.getPosition(), var7.getRotation(), var2);
      }
   }

   class="kw">private class="kw">static void setNextRole(
      @Nonnull NPCRunTestsCommand.NPCTestData var0, @Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull World var3
   ) {
      Ref var4 = var3.getEntityRef(var0.targetUUID);
      var0.index++;
      if (var0.index >= var0.npcRoles.size()) {
         reportResults(var1, var0, var2);
         if (var4 != null) {
            cleanupNPC(var4, var2);
         }

         var2.removeComponent(var1, NPCRunTestsCommand.NPCTestData.getComponentType());
      } else {
         Vector3d var5;
         Rotation3f var6;
         if (var4 != null) {
            TransformComponent var7 = var2.getComponent(var4, TransformComponent.getComponentType());
            assert var7 != null;
            var5 = var7.getPosition();
            var6 = var7.getRotation();
            cleanupNPC(var4, var2);
         } else {
            TransformComponent var8 = var2.getComponent(var1, TransformComponent.getComponentType());
            assert var8 != null;
            var5 = var8.getPosition();
            var6 = var8.getRotation();
         }

         spawnNPC(var1, var0, var0.index, var5, var6, var2);
      }
   }

   class="kw">private class="kw">static void cleanupNPC(@Nonnull Ref<EntityStore> var0, @Nonnull Store<EntityStore> var1) {
      Ref var2 = FlockPlugin.getFlockReference(var0, var1);
      if (var2 != null) {
         ReferenceArrayList var3 = new ReferenceArrayList();
         EntityGroup var4 = var1.getComponent(var2, EntityGroup.getComponentType());
         assert var4 != null;
         var4.forEachMember((var0x, var1x, var2x) -> var2x.add(var1x), var3);
         ObjectListIterator var5 = var3.iterator();

         while (var5.hasNext()) {
            Ref var6 = (Ref<EntityStore>)var5.next();
            if (!var6.equals(var0)) {
               var1.removeEntity(var6, RemoveReason.REMOVE);
            }
         }
      }

      var1.removeEntity(var0, RemoveReason.REMOVE);
   }

   class="kw">private class="kw">static void spawnNPC(
      @Nonnull Ref<EntityStore> var0,
      @Nonnull NPCRunTestsCommand.NPCTestData var1,
      int var2,
      @Nonnull Vector3d var3,
      @Nullable Rotation3f var4,
      @Nonnull Store<EntityStore> var5
   ) {
      Pair var6 = NPCPlugin.get().spawnEntity(var5, var1.npcRoles.getInt(var2), var3, var4, null, null);
      Ref var7 = (Ref<EntityStore>)var6.first();
      NPCEntity var8 = (NPCEntity)var6.second();
      int var9 = var1.flockSizes.getInt(var2);
      if (var9 > 1) {
         TransformComponent var10 = var5.getComponent(var7, TransformComponent.getComponentType());
         assert var10 != null;
         FlockPlugin.trySpawnFlock(var7, var8, var5, var8.getRoleIndex(), var10.getPosition(), var10.getRotation(), var9, null);
      }

      String var13 = var8.getRoleName();
      PlayerRef var11 = var5.getComponent(var0, PlayerRef.getComponentType());
      assert var11 != null;
      var11.sendMessage(
         Message.translation("server.commands.npc.runtests.testing").param("role", var13).insert("\n").insert(Message.translation("server.npc.tests." + var13))
      );
      UUIDComponent var12 = var5.getComponent(var7, UUIDComponent.getComponentType());
      assert var12 != null;
      var1.targetUUID = var12.getUuid();
   }

   class="kw">private class="kw">static void reportResults(@Nonnull Ref<EntityStore> var0, @Nonnull NPCRunTestsCommand.NPCTestData var1, @Nonnull Store<EntityStore> var2) {
      NPCPlugin var3 = NPCPlugin.get();
      Message var4 = Message.translation("server.commands.npc.runtests.results");

      for (int var5 = 0; var5 < var1.npcRoles.size(); var5++) {
         int var6 = var1.npcRoles.getInt(var5);
         var4.insert("  " + var3.getName(var6) + ": ");
         String var7 = var5 >= var1.index
            ? "server.commands.npc.runtests.notrun"
            : (var1.failedRoles.contains(var6) ? "server.commands.npc.runtests.fail" : "server.commands.npc.runtests.pass");
         var4.insert(Message.translation(var7));
         var4.insert("\n");
      }

      PlayerRef var8 = var2.getComponent(var0, PlayerRef.getComponentType());
      assert var8 != null;
      var8.sendMessage(var4);
      var3.getLogger().at(Level.INFO).log("%s", var4.getRawText());
   }

   class="kw">public class="kw">static class NPCTestData class="kw">implements Component<EntityStore> {
      class="kw">private class="kw">final IntList npcRoles = new IntArrayList();
      class="kw">private class="kw">final IntList flockSizes = new IntArrayList();
      class="kw">private class="kw">final IntSet failedRoles = new IntOpenHashSet();
      class="kw">private int index;
      class="kw">private UUID targetUUID;

      class="kw">public NPCTestData() {
      }

      class="kw">public class="kw">static ComponentType<EntityStore, NPCRunTestsCommand.NPCTestData> getComponentType() {
         class="kw">return NPCPlugin.get().getNpcTestDataComponentType();
      }

      @Nonnull
      @Override
      class="kw">public Component<EntityStore> clone() {
         NPCRunTestsCommand.NPCTestData var1 = new NPCRunTestsCommand.NPCTestData();
         var1.npcRoles.addAll(this.npcRoles);
         var1.index = this.index;
         var1.failedRoles.addAll(this.failedRoles);
         class="kw">return var1;
      }
   }
}