NPCAllCommand class

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

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

extends: AbstractPlayerCommand

Поля (20)

МодификаторыТипИмя
int var10
double var11
double var13
TransformComponent var15
Vector3d var16
double var17
double var19
Vector3d var21
String var23
int var24
int var25
double var26
double var28
double var30
int var32
Pair var33
Ref var34
double var6
NPCPlugin var8
List var9

Методы (5)

МодификаторыВозвратСигнатура
abstract throw new IllegalStateExceptionthrow new IllegalStateException("No such valid role: " + var23)
abstract for for(int var22 = 0; var22 < var9.size()
if if(var32 < 0)
if if(var33 != null)
abstract super super("all", "server.commands.npc.all.desc", true)

Исходный код

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

class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
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.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.Frozen;
class="kw">import com.hypixel.hytale.server.core.entity.nameplate.Nameplate;
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.util.NPCPhysicsMath;
class="kw">import it.unimi.dsi.fastutil.Pair;
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 NPCAllCommand class="kw">extends AbstractPlayerCommand {
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_NPC_ALL_NO_ROLES_TO_SPAWN = Message.translation("server.commands.npc.all.noRolesToSpawn");
   @Nonnull
   class="kw">private class="kw">final OptionalArg<Double> distanceArg = this.withOptionalArg("distance", "server.commands.npc.all.distance", ArgTypes.DOUBLE)
      .addValidator(Validators.greaterThan(0.0));

   class="kw">public NPCAllCommand() {
      super("all", "server.commands.npc.all.desc", true);
   }

   @Override
   class="kw">protected void execute(
      @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
   ) {
      double var6 = this.distanceArg.provided(var1) ? this.distanceArg.get(var1) : 4.0;
      NPCPlugin var8 = NPCPlugin.get();
      List var9 = var8.getRoleTemplateNames(true);
      if (var9.isEmpty()) {
         var4.sendMessage(MESSAGE_COMMANDS_NPC_ALL_NO_ROLES_TO_SPAWN);
      } else {
         var9.sort(String::compareToIgnoreCase);
         int var10 = MathUtil.ceil(Math.sqrt(var9.size()));
         double var11 = (var10 - 1) * var6;
         double var13 = var11 / 2.0;
         TransformComponent var15 = var2.getComponent(var3, TransformComponent.getComponentType());
         assert var15 != null;
         Vector3d var16 = var15.getPosition();
         double var17 = var16.x() - var13;
         double var19 = var16.z() - var13;
         Vector3d var21 = new Vector3d();

         for (int var22 = 0; var22 < var9.size(); var22++) {
            String var23 = var9.get(var22);
            if (var23 != null && !var23.isEmpty()) {
               try {
                  int var24 = var22 % var10;
                  int var25 = var22 / var10;
                  double var26 = var17 + var6 * var24;
                  double var28 = var19 + var6 * var25;
                  double var30 = NPCPhysicsMath.heightOverGround(var5, var26, var28);
                  if (!(var30 < 0.0)) {
                     var21.set(var26, var30, var28);
                     int var32 = var8.getIndex(var23);
                     if (var32 < 0) {
                        throw new IllegalStateException("No such valid role: " + var23);
                     }

                     Pair var33 = var8.spawnEntity(var2, var32, var21, null, null, null);
                     if (var33 != null) {
                        Ref var34 = (Ref<EntityStore>)var33.first();
                        assert var34 != null;
                        var2.putComponent(var34, Nameplate.getComponentType(), new Nameplate(var23));
                        var2.ensureComponent(var34, Frozen.getComponentType());
                     }
                  }
               } catch (Throwable var35) {
                  var4.sendMessage(Message.translation("server.commands.npc.all.failedToSpawn").param("role", var23));
                  ((HytaleLogger.Api)var8.getLogger().at(Level.WARNING).withCause(var35)).log("Error spawning NPC with role: %s", var23);
               }
            }
         }
      }
   }
}