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;
}
}
}