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