PrefabEditSelectCommand class
Пакет: com.hypixel.hytale.builtin.buildertools.prefabeditor.commands
Файл: com/hypixel/hytale/builtin/buildertools/prefabeditor/commands/PrefabEditSelectCommand.java
extends: AbstractPlayerCommand
Поля (19)
| Модификаторы | Тип | Имя |
|---|---|---|
|
|
break |
|
|
return |
|
Vector3d |
var10 |
|
double |
var11 |
|
|
var11 |
|
boolean |
var12 |
|
Vector3d |
var15 |
|
double |
var16 |
|
Vector3i |
var18 |
|
Player |
var19 |
|
Vector3i |
var2 |
|
Ref |
var3 |
|
TransformComponent |
var4 |
|
PrefabEditSessionManager |
var6 |
|
PrefabEditSession |
var7 |
|
PrefabEditingMetadata |
var8 |
|
|
var8 |
|
|
var8 |
|
TransformComponent |
var9 |
Методы (7)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
if if(var7 == null) |
|
|
if if(var11 > var16) |
|
|
if if(var18 == null) |
|
|
if if(var12) |
|
|
if if(var8 == null) |
|
|
if if(var2 != null) |
abstract |
|
super super("select", "server.commands.editprefab.select.desc") |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.buildertools.prefabeditor.commands;
class="kw">import com.hypixel.hytale.builtin.buildertools.BuilderToolsPlugin;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.PrefabEditSession;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.PrefabEditSessionManager;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.PrefabEditingMetadata;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
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.basecommands.AbstractPlayerCommand;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
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 javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3i;
class="kw">public class PrefabEditSelectCommand class="kw">extends AbstractPlayerCommand {
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_EDIT_PREFAB_SELECT_ERROR_NO_TARGET_FOUND = Message.translation(
"server.commands.editprefab.select.error.noTargetFound"
);
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_EDIT_PREFAB_SELECT_ERROR_NO_PREFAB_FOUND = Message.translation(
"server.commands.editprefab.select.error.noPrefabFound"
);
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_EDIT_PREFAB_NOT_IN_EDIT_SESSION = Message.translation("server.commands.editprefab.notInEditSession");
@Nonnull
class="kw">private class="kw">final FlagArg nearestArg = this.withFlagArg("nearest", "server.commands.editprefab.select.nearest.desc");
class="kw">public PrefabEditSelectCommand() {
super("select", "server.commands.editprefab.select.desc");
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
PrefabEditSessionManager var6 = BuilderToolsPlugin.get().getPrefabEditSessionManager();
PrefabEditSession var7 = var6.getPrefabEditSession(var4.getUuid());
if (var7 == null) {
var1.sendMessage(MESSAGE_COMMANDS_EDIT_PREFAB_NOT_IN_EDIT_SESSION);
} else {
PrefabEditingMetadata var8 = null;
if (this.nearestArg.get(var1)) {
TransformComponent var9 = var2.getComponent(var3, TransformComponent.getComponentType());
assert var9 != null;
Vector3d var10 = new Vector3d(var9.getPosition());
var10.y = 0.0;
double var11 = 2.147483647E9;
for (PrefabEditingMetadata var14 : var7.getLoadedPrefabMetadata().values()) {
Vector3d var15 = new Vector3d((var14.getMaxPoint().x + var14.getMinPoint().x) / 2.0, 0.0, (var14.getMaxPoint().z + var14.getMinPoint().z) / 2.0);
double var16 = var15.distance(var10);
if (var11 > var16) {
var11 = var16;
var8 = var14;
}
}
} else {
Vector3i var18 = getTargetLocation(var3, var2);
if (var18 == null) {
var1.sendMessage(MESSAGE_COMMANDS_EDIT_PREFAB_SELECT_ERROR_NO_TARGET_FOUND);
class="kw">return;
}
for (PrefabEditingMetadata var21 : var7.getLoadedPrefabMetadata().values()) {
boolean var12 = var21.isLocationWithinPrefabBoundingBox(var18);
if (var12) {
var8 = var21;
break;
}
}
}
if (var8 == null) {
var1.sendMessage(MESSAGE_COMMANDS_EDIT_PREFAB_SELECT_ERROR_NO_PREFAB_FOUND);
} else {
Player var19 = var2.getComponent(var3, Player.getComponentType());
assert var19 != null;
var7.setSelectedPrefab(var3, var8, var2);
}
}
}
@Nullable
class="kw">private class="kw">static Vector3i getTargetLocation(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1) {
Vector3i var2 = TargetUtil.getTargetBlock(var0, 200.0, var1);
if (var2 != null) {
class="kw">return var2;
} else {
Ref var3 = TargetUtil.getTargetEntity(var0, var1);
if (var3 != null && var3.isValid()) {
TransformComponent var4 = var1.getComponent(var3, TransformComponent.getComponentType());
class="kw">return var4 == null ? null : Vector3dUtil.toVector3i(var4.getPosition());
} else {
class="kw">return null;
}
}
}
}