AbstractTargetEntityCommand class
Пакет: com.hypixel.hytale.server.core.command.system.basecommands
Файл: com/hypixel/hytale/server/core/command/system/basecommands/AbstractTargetEntityCommand.java
extends: AbstractAsyncCommand
Поля (31)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
Message |
MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
List |
var10 |
|
SpatialResource |
var11 |
|
SpatialResource |
var12 |
|
PlayerRef |
var13 |
|
Ref |
var14 |
|
Ref |
var15 |
|
Ref |
var16 |
|
Ref |
var17 |
|
World |
var2 |
|
|
var2 |
|
|
var2 |
|
Ref |
var3 |
|
Store |
var4 |
|
Object |
var4 |
|
|
var4 |
|
|
var4 |
|
|
var4 |
|
|
var4 |
|
Ref |
var5 |
|
TransformComponent |
var6 |
|
double |
var7 |
|
Vector3d |
var9 |
Методы (6)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract abstract |
void |
executevoid execute(@Nonnull CommandContext var1, @Nonnull List<Ref<EntityStore>> var2, @Nonnull World var3, @Nonnull Store<EntityStore> var4) |
|
|
if if(var6 == null) |
|
|
if if(var17 == null) |
abstract |
|
super super(var1, var2) |
abstract |
|
super super(var1, var2, var3) |
abstract |
|
super super(var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.command.system.basecommands;
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.component.spatial.SpatialResource;
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.arguments.types.EntityWrappedArg;
class="kw">import com.hypixel.hytale.server.core.modules.entity.EntityModule;
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.core.util.TargetUtil;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectLists;
class="kw">import it.unimi.dsi.fastutil.objects.ReferenceArrayList;
class="kw">import it.unimi.dsi.fastutil.objects.ReferenceLists;
class="kw">import java.util.List;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class="kw">abstract class AbstractTargetEntityCommand class="kw">extends AbstractAsyncCommand {
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD = Message.translation("server.commands.errors.playerNotInWorld");
class="kw">private class="kw">static class="kw">final Message MESSAGE_GENERAL_NO_ENTITY_IN_VIEW = Message.translation("server.general.noEntityInView");
@Nonnull
class="kw">private class="kw">final OptionalArg<World> worldArg = this.withOptionalArg("world", "server.commands.worldthread.arg.desc", ArgTypes.WORLD);
@Nonnull
class="kw">private class="kw">final OptionalArg<Double> radiusArg = this.withOptionalArg("radius", "server.commands.entity.radius.desc", ArgTypes.DOUBLE)
.addValidator(Validators.greaterThan(0.0));
@Nonnull
class="kw">private class="kw">final OptionalArg<PlayerRef> playerArg = this.withOptionalArg("player", "server.commands.argtype.player.desc", ArgTypes.PLAYER_REF);
@Nonnull
class="kw">private class="kw">final EntityWrappedArg entityArg = this.withOptionalArg("entity", "server.commands.entity.entity.desc", ArgTypes.ENTITY_ID);
class="kw">public AbstractTargetEntityCommand(@Nonnull String var1, @Nonnull String var2) {
super(var1, var2);
}
class="kw">public AbstractTargetEntityCommand(@Nonnull String var1, @Nonnull String var2, boolean var3) {
super(var1, var2, var3);
}
class="kw">public AbstractTargetEntityCommand(@Nonnull String var1) {
super(var1);
}
@Nonnull
@Override
class="kw">protected class="kw">final CompletableFuture<Void> executeAsync(@Nonnull CommandContext var1) {
World var2;
if (this.worldArg.provided(var1)) {
var2 = this.worldArg.get(var1);
} else {
if (!var1.isPlayer()) {
var1.sendMessage(Message.translation("server.commands.errors.playerOrArg").param("option", "world"));
class="kw">return CompletableFuture.completedFuture(null);
}
Ref var3 = var1.senderAsPlayerRef();
if (var3 == null || !var3.isValid()) {
var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
class="kw">return CompletableFuture.completedFuture(null);
}
var2 = var3.getStore().getExternalData().getWorld();
}
Store var4 = var2.getEntityStore().getStore();
class="kw">return this.runAsync(var1, () -> {
Object var4;
if (this.radiusArg.provided(var1)) {
if (!var1.isPlayer()) {
var1.sendMessage(Message.translation("server.commands.errors.playerOrArg").param("option", "radius"));
class="kw">return;
}
Ref var5 = var1.senderAsPlayerRef();
if (var5 == null || !var5.isValid()) {
var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
class="kw">return;
}
TransformComponent var6 = var4.getComponent(var5, TransformComponent.getComponentType());
if (var6 == null) {
var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
class="kw">return;
}
double var7 = this.radiusArg.get(var1);
Vector3d var9 = var6.getPosition();
var4 = new ReferenceArrayList();
List var10 = SpatialResource.getThreadLocalReferenceList();
SpatialResource var11 = var4.getResource(EntityModule.get().getEntitySpatialResourceType());
var11.getSpatialStructure().collect(var9, var7, var10);
var4.addAll(var10);
SpatialResource var12 = var4.getResource(EntityModule.get().getPlayerSpatialResourceType());
var12.getSpatialStructure().collect(var9, var7, var10);
var4.addAll(var10);
} else if (this.playerArg.provided(var1)) {
PlayerRef var13 = this.playerArg.get(var1);
Ref var16 = var13.getReference();
if (var16 == null || !var16.isValid()) {
var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
class="kw">return;
}
var4 = ReferenceLists.singleton(var16);
} else if (this.entityArg.provided(var1)) {
Ref var14 = this.entityArg.get(var4, var1);
if (var14 == null || !var14.isValid()) {
var1.sendMessage(MESSAGE_GENERAL_NO_ENTITY_IN_VIEW);
class="kw">return;
}
var4 = ObjectLists.singleton(var14);
} else {
if (!var1.isPlayer()) {
var1.sendMessage(Message.translation("server.commands.errors.playerOrArg").param("option", "entity"));
class="kw">return;
}
Ref var15 = var1.senderAsPlayerRef();
if (var15 == null || !var15.isValid()) {
var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
class="kw">return;
}
Ref var17 = TargetUtil.getTargetEntity(var15, var4);
if (var17 == null) {
var1.sendMessage(MESSAGE_GENERAL_NO_ENTITY_IN_VIEW);
class="kw">return;
}
var4 = ObjectLists.singleton(var17);
}
this.execute(var1, var4, var2, var4);
}, var2);
}
class="kw">protected class="kw">abstract void execute(@Nonnull CommandContext var1, @Nonnull List<Ref<EntityStore>> var2, @Nonnull World var3, @Nonnull Store<EntityStore> var4);
}