NPCSensorStatsCommand class
Пакет: com.hypixel.hytale.server.npc.commands
Файл: com/hypixel/hytale/server/npc/commands/NPCSensorStatsCommand.java
extends: AbstractPlayerCommand
Поля (17)
| Модификаторы | Тип | Имя |
|---|---|---|
|
StringBuilder |
var10 |
|
String |
var12 |
|
int |
var13 |
|
Pair |
var14 |
|
Ref |
var15 |
|
NPCEntity |
var16 |
|
RoleStats |
var17 |
|
int |
var5 |
|
|
var5 |
|
NPCPlugin |
var6 |
|
IntArrayList |
var6 |
|
int |
var6 |
|
|
var6 |
|
List |
var7 |
|
int[] |
var7 |
|
TransformComponent |
var8 |
|
Vector3d |
var9 |
Методы (21)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(int var11 : var7) |
abstract |
|
for for(int var11 = 0; var11 < var7.size() |
abstract |
|
for for(int var7 = 0; var7 < var6.size() |
static |
void |
formatBucketsvoid formatBuckets(@Nonnull StringBuilder var0, @Nonnull RoleStats var1, @Nonnull String var2, boolean var3, int var4) |
abstract |
|
formatBuckets formatBuckets(var10, var17, "B=", true, 20) |
abstract |
|
formatBuckets formatBuckets(var10, var17, "B=", false, 20) |
static |
void |
formatRangesvoid formatRanges(@Nonnull StringBuilder var0, @Nonnull RoleStats var1, @Nonnull String var2, boolean var3, @Nonnull RoleStats.RangeType var4, int var5) |
abstract |
|
formatRanges formatRanges(var10, var17, "S=", true, RoleStats.RangeType.SORTED, 25) |
abstract |
|
formatRanges formatRanges(var10, var17, "U=", true, RoleStats.RangeType.UNSORTED, 9) |
abstract |
|
formatRanges formatRanges(var10, var17, "A=", true, RoleStats.RangeType.AVOIDANCE, 9) |
abstract |
|
formatRanges formatRanges(var10, var17, "S=", false, RoleStats.RangeType.SORTED, 25) |
abstract |
|
formatRanges formatRanges(var10, var17, "U=", false, RoleStats.RangeType.UNSORTED, 9) |
abstract |
|
formatRanges formatRanges(var10, var17, "A=", false, RoleStats.RangeType.AVOIDANCE, 9) |
|
|
if if(var13 >= 0) |
|
|
if if(var14 == null) |
|
|
if if(var17 != null) |
|
|
if if(var5 > 0) |
|
|
if if(var7 != null && var7.length != 0) |
|
|
if if(var6 > 0) |
static |
boolean |
isRangesEmptyboolean isRangesEmpty(@Nonnull RoleStats var0, boolean var1) |
abstract |
|
super super("sensorstats", "server.commands.npc.sensorstats.desc") |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.commands;
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.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
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.npc.NPCPlugin;
class="kw">import com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import com.hypixel.hytale.server.npc.role.support.PositionCache;
class="kw">import com.hypixel.hytale.server.npc.role.support.RoleStats;
class="kw">import it.unimi.dsi.fastutil.Pair;
class="kw">import it.unimi.dsi.fastutil.ints.IntArrayList;
class="kw">import java.util.List;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class NPCSensorStatsCommand class="kw">extends AbstractPlayerCommand {
class="kw">public NPCSensorStatsCommand() {
super("sensorstats", "server.commands.npc.sensorstats.desc");
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
NPCPlugin var6 = NPCPlugin.get();
List var7 = var6.getRoleTemplateNames(true);
if (var7.isEmpty()) {
var1.sendMessage(Message.translation("server.commands.npc.sensorstats.noroles"));
} else {
var7.sort(String::compareToIgnoreCase);
TransformComponent var8 = var2.getComponent(var3, TransformComponent.getComponentType());
assert var8 != null;
Vector3d var9 = new Vector3d(var8.getPosition());
StringBuilder var10 = new StringBuilder();
for (int var11 = 0; var11 < var7.size(); var11++) {
String var12 = var7.get(var11);
int var13 = NPCPlugin.get().getIndex(var12);
if (var13 >= 0) {
Pair var14 = var6.spawnEntity(var2, var13, var9, null, null, (var0, var1x, var2x) -> var0.setCollectSensorStats(true), null);
if (var14 == null) {
var1.sendMessage(Message.translation("server.commands.npc.spawn.templateNotFound").param("template", var12));
} else {
Ref var15 = (Ref<EntityStore>)var14.first();
NPCEntity var16 = (NPCEntity)var14.second();
try {
RoleStats var17 = PositionCache.get(var15, var2).getRoleStats();
if (var17 != null) {
if (!isRangesEmpty(var17, true)) {
var10.append('\n').append("PLY ");
formatRanges(var10, var17, "S=", true, RoleStats.RangeType.SORTED, 25);
formatRanges(var10, var17, "U=", true, RoleStats.RangeType.UNSORTED, 9);
formatRanges(var10, var17, "A=", true, RoleStats.RangeType.AVOIDANCE, 9);
formatBuckets(var10, var17, "B=", true, 20);
var10.append(var12);
}
if (!isRangesEmpty(var17, false)) {
var10.append('\n').append("ENT ");
formatRanges(var10, var17, "S=", false, RoleStats.RangeType.SORTED, 25);
formatRanges(var10, var17, "U=", false, RoleStats.RangeType.UNSORTED, 9);
formatRanges(var10, var17, "A=", false, RoleStats.RangeType.AVOIDANCE, 9);
formatBuckets(var10, var17, "B=", false, 20);
var10.append(var12);
}
}
} catch (Throwable var21) {
var6.getLogger().at(Level.WARNING).log("Error reading sensor stats for role %s: %s", var12, var21.getMessage());
} class="kw">finally {
var16.remove();
}
}
}
}
var6.getLogger().at(Level.INFO).log("%s", var10.toString());
}
}
class="kw">private class="kw">static boolean isRangesEmpty(@Nonnull RoleStats var0, boolean var1) {
class="kw">return var0.getRanges(var1, RoleStats.RangeType.SORTED) == null
&& var0.getRanges(var1, RoleStats.RangeType.UNSORTED) == null
&& var0.getRanges(var1, RoleStats.RangeType.AVOIDANCE) == null;
}
class="kw">private class="kw">static void formatBuckets(@Nonnull StringBuilder var0, @Nonnull RoleStats var1, @Nonnull String var2, boolean var3, int var4) {
var0.append(var2);
int var5 = var0.length();
IntArrayList var6 = var1.getBuckets(var3);
for (int var7 = 0; var7 < var6.size(); var7++) {
var0.append(var6.getInt(var7)).append(" ");
}
var5 = var4 + var5 - var0.length();
if (var5 > 0) {
var0.append(" ".repeat(var5));
}
}
class="kw">private class="kw">static void formatRanges(
@Nonnull StringBuilder var0, @Nonnull RoleStats var1, @Nonnull String var2, boolean var3, @Nonnull RoleStats.RangeType var4, int var5
) {
var0.append(var2);
int var6 = var0.length();
int[] var7 = var1.getRangesSorted(var3, var4);
if (var7 != null && var7.length != 0) {
for (int var11 : var7) {
var0.append(var11).append(" ");
}
} else {
var0.append("- ");
}
var6 = var5 + var6 - var0.length();
if (var6 > 0) {
var0.append(" ".repeat(var6));
}
}
}