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