NPCMultiSelectCommandBase class
Пакет: com.hypixel.hytale.server.npc.commands
Файл: com/hypixel/hytale/server/npc/commands/NPCMultiSelectCommandBase.java
extends: NPCWorldCommandBase
Поля (48)
| Модификаторы | Тип | Имя |
|---|---|---|
|
|
return |
|
|
return |
|
|
return |
|
String[] |
var10 |
|
float |
var15 |
|
TransformComponent |
var17 |
|
double |
var18 |
|
Ref |
var20 |
|
NPCEntity |
var21 |
|
List |
var22 |
|
|
var22 |
|
|
var22 |
|
|
var22 |
|
ComponentType |
var23 |
|
Vector3d |
var24 |
|
Ref |
var25 |
|
TransformComponent |
var26 |
|
Ref |
var27 |
|
|
var27 |
|
Transform |
var28 |
|
double |
var29 |
|
|
var29 |
|
NPCEntity |
var3 |
|
Vector3d |
var30 |
|
UUIDComponent |
var4 |
|
Ref |
var4 |
|
|
var4 |
|
NPCEntity |
var4 |
|
UUID |
var5 |
|
float |
var5 |
|
|
var5 |
|
|
var5 |
|
|
var5 |
|
|
var5 |
|
|
var5 |
|
NPCEntity |
var5 |
|
float |
var6 |
|
TransformComponent |
var6 |
|
boolean |
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
Vector3d |
var7 |
|
Set |
var8 |
|
double |
var8 |
|
String |
var9 |
Методы (13)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(String var14 : var10) |
|
|
for for(Ref var16 : var22) |
|
|
if if(var3 == null) |
|
|
if if(var20 != null) |
|
|
if if(var21 != null) |
|
|
if if(var5 < 0.0F || var5 > 180.0F) |
|
|
if if(var5 == 0.0F) |
|
|
if if(var15 <= -1.0F) |
|
|
if if(var18 < var29) |
protected |
void |
processEntityListvoid processEntityList(@Nonnull CommandContext var1, @Nonnull World var2, @Nonnull Store<EntityStore> var3, @Nonnull List<Ref<EntityStore>> var4) |
abstract |
|
super super(var1, var2) |
abstract |
|
super super(var1, var2, var3) |
abstract |
|
super super(var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.commands;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.vector.Transform;
class="kw">import com.hypixel.hytale.math.vector.Vector3dUtil;
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.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
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.core.util.TargetUtil;
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.objects.ReferenceArrayList;
class="kw">import java.util.HashSet;
class="kw">import java.util.List;
class="kw">import java.util.Set;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">public class="kw">abstract class NPCMultiSelectCommandBase class="kw">extends NPCWorldCommandBase {
@Nonnull
class="kw">protected class="kw">static class="kw">final Message MESSAGE_COMMANDS_ERRORS_PLAYER_OR_ARG = Message.translation("server.commands.errors.playerOrArg").param("option", "entity");
@Nonnull
class="kw">protected class="kw">static class="kw">final Message MESSAGE_COMMANDS_ERRORS_NO_ENTITY_IN_VIEW = Message.translation("server.commands.errors.no_entity_in_view")
.param("option", "entity");
class="kw">protected class="kw">static class="kw">final float DEFAULT_CONE_ANGLE = 30.0F;
class="kw">protected class="kw">static class="kw">final float DEFAULT_RANGE = 8.0F;
class="kw">protected class="kw">static class="kw">final float RANGE_MIN = 0.0F;
class="kw">protected class="kw">static class="kw">final float RANGE_MAX = 2048.0F;
class="kw">protected class="kw">static class="kw">final float CONE_ANGLE_MIN = 0.0F;
class="kw">protected class="kw">static class="kw">final float CONE_ANGLE_MAX = 180.0F;
@Nonnull
class="kw">protected class="kw">final OptionalArg<Float> coneAngleArg = this.withOptionalArg("angle", "server.commands.npc.command.angle.desc", ArgTypes.FLOAT);
@Nonnull
class="kw">protected class="kw">final OptionalArg<Float> rangeArg = this.withOptionalArg("range", "server.commands.npc.command.range.desc", ArgTypes.FLOAT);
@Nonnull
class="kw">private class="kw">final OptionalArg<String> rolesArg = this.withOptionalArg("roles", "server.commands.npc.command.roles.desc", ArgTypes.STRING);
@Nonnull
class="kw">private class="kw">final FlagArg nearestArg = this.withFlagArg("nearest", "server.commands.npc.command.nearest.desc");
@Nonnull
class="kw">private class="kw">final FlagArg presetCone30 = this.withFlagArg("cone", "server.commands.npc.command.preset.cone.desc");
@Nonnull
class="kw">private class="kw">final FlagArg presetCone30all = this.withFlagArg("coneAll", "server.commands.npc.command.preset.cone_all.desc");
@Nonnull
class="kw">private class="kw">final FlagArg presetSphere = this.withFlagArg("sphere", "server.commands.npc.command.preset.sphere.desc");
@Nonnull
class="kw">private class="kw">final FlagArg presetRay = this.withFlagArg("ray", "server.commands.npc.command.preset.ray.desc");
class="kw">public NPCMultiSelectCommandBase(@Nonnull String var1, @Nonnull String var2) {
super(var1, var2);
}
class="kw">public NPCMultiSelectCommandBase(@Nonnull String var1, @Nonnull String var2, boolean var3) {
super(var1, var2, var3);
}
class="kw">public NPCMultiSelectCommandBase(@Nonnull String var1) {
super(var1);
}
@Nullable
class="kw">protected class="kw">static NPCEntity ensureIsNPC(@Nonnull CommandContext var0, @Nonnull Store<EntityStore> var1, @Nonnull Ref<EntityStore> var2) {
NPCEntity var3 = var1.getComponent(var2, NPCEntity.getComponentType());
if (var3 == null) {
UUIDComponent var4 = var1.getComponent(var2, UUIDComponent.getComponentType());
assert var4 != null;
UUID var5 = var4.getUuid();
var0.sendMessage(Message.translation("server.commands.errors.not_npc").param("uuid", var5.toString()));
class="kw">return null;
} else {
class="kw">return var3;
}
}
@Override
class="kw">protected void execute(@Nonnull CommandContext var1, @Nonnull World var2, @Nonnull Store<EntityStore> var3) {
if (this.entityArg.provided(var1)) {
Ref var20 = this.entityArg.get(var3, var1);
if (var20 != null) {
NPCEntity var21 = ensureIsNPC(var1, var3, var20);
if (var21 != null) {
this.execute(var1, var21, var2, var3, var20);
}
}
} else {
Ref var4 = null;
if (var1.isPlayer()) {
var4 = var1.senderAsPlayerRef();
}
if (var4 != null && var4.isValid()) {
Set var8 = new HashSet<>();
if (this.rolesArg.provided(var1)) {
String var9 = this.rolesArg.get(var1);
if (var9 == null || var9.isEmpty()) {
var1.sendMessage(Message.translation("server.commands.errors.npc.no_role_list_provided"));
class="kw">return;
}
String[] var10 = var9.split(",", 0);
for (String var14 : var10) {
if (!var14.isBlank()) {
if (!NPCPlugin.get().hasRoleName(var14)) {
var1.sendMessage(Message.translation("server.commands.errors.npc.unknown_role").param("role", var14));
class="kw">return;
}
var8.add(var14);
}
}
}
float var6 = this.rangeArg.provided(var1) ? this.rangeArg.get(var1) : 8.0F;
if (!(var6 < 0.0F) && !(var6 > 2048.0F)) {
float var5;
boolean var7;
if (this.presetCone30.provided(var1)) {
var5 = 30.0F;
var7 = true;
} else if (this.presetCone30all.provided(var1)) {
var5 = 30.0F;
var7 = false;
} else if (this.presetSphere.provided(var1)) {
var5 = 180.0F;
var7 = false;
} else if (this.presetRay.provided(var1)) {
var5 = 0.0F;
var7 = true;
} else {
var5 = this.coneAngleArg.provided(var1) ? this.coneAngleArg.get(var1).intValue() : 30.0F;
if (var5 < 0.0F || var5 > 180.0F) {
var1.sendMessage(
Message.translation("server.commands.errors.validation.range.between_inclusive")
.param("param", "angle")
.param("min", 0.0F)
.param("max", 180.0F)
.param("value", var5)
);
class="kw">return;
}
var7 = this.nearestArg.provided(var1);
}
List var22 = null;
ComponentType var23 = NPCEntity.getComponentType();
assert var23 != null;
Vector3d var24 = new Vector3d();
if (var5 == 0.0F) {
Ref var25 = TargetUtil.getTargetEntity(var4, var6, var3);
if (var25 != null && var3.getComponent(var25, var23) != null) {
var22 = new ReferenceArrayList();
var22.add(var25);
}
var24.zero();
} else {
TransformComponent var26 = var3.getComponent(var4, TransformComponent.getComponentType());
assert var26 != null;
Transform var28 = TargetUtil.getLook(var4, var3);
var24.set(var28.getPosition());
Vector3d var30 = var28.getDirection();
assert var24.length() == 1.0;
var22 = TargetUtil.getAllEntitiesInSphere(var24, var6, var3);
float var15 = (float)Math.cos((float)Math.toRadians(var5));
assert var5 != 180.0F || var15 == -1.0F;
var22.removeIf(var5x -> {
if (var3.getComponent((Ref<EntityStore>)var5x, var23) == null) {
class="kw">return true;
}
if (var15 <= -1.0F) {
class="kw">return false;
}
TransformComponent var6 = var3.getComponent((Ref<EntityStore>)var5x, TransformComponent.getComponentType());
assert var6 != null;
Vector3d var7 = Vector3dUtil.directionTo(var24, var6.getPosition());
double var8 = var7.length();
class="kw">return var8 < 1.0E-4 ? true : var30.dot(var7) < var15 * var8;
});
}
if (var22 != null && !var22.isEmpty() && !var8.isEmpty()) {
var22.removeIf(var3x -> {
NPCEntity var4 = var3.getComponent((Ref<EntityStore>)var3x, var23);
class="kw">return !var8.contains(var4.getRoleName());
});
}
if (var22 != null && !var22.isEmpty()) {
if (var7 && var22.size() > 1) {
Ref var27 = var22.getFirst();
double var29 = Double.MAX_VALUE;
for (Ref var16 : var22) {
TransformComponent var17 = var3.getComponent(var16, TransformComponent.getComponentType());
assert var17 != null;
double var18 = var24.distanceSquared(var17.getPosition());
if (var18 < var29) {
var29 = var18;
var27 = var16;
}
}
var22 = List.of(var27);
}
this.processEntityList(var1, var2, var3, var22);
} else {
var1.sendMessage(MESSAGE_COMMANDS_ERRORS_NO_ENTITY_IN_VIEW);
}
} else {
var1.sendMessage(
Message.translation("server.commands.errors.validation.range.between_inclusive")
.param("param", "range")
.param("min", 0.0F)
.param("max", 2048.0F)
.param("value", var6)
);
}
} else {
var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_OR_ARG);
}
}
}
class="kw">protected void processEntityList(@Nonnull CommandContext var1, @Nonnull World var2, @Nonnull Store<EntityStore> var3, @Nonnull List<Ref<EntityStore>> var4) {
var4.forEach(var4x -> {
NPCEntity var5 = var3.getComponent((Ref<EntityStore>)var4x, NPCEntity.getComponentType());
assert var5 != null;
this.execute(var1, var5, var2, var3, (Ref<EntityStore>)var4x);
});
}
}