PrefabSelectionInteraction class
Пакет: com.hypixel.hytale.builtin.buildertools.prefabeditor
Файл: com/hypixel/hytale/builtin/buildertools/prefabeditor/PrefabSelectionInteraction.java
extends: SimpleInstantInteraction
Поля (25)
| Модификаторы | Тип | Имя |
|---|---|---|
|
|
break |
|
|
return |
|
PrefabEditSessionManager |
var10 |
|
PrefabEditSession |
var11 |
|
TransformComponent |
var12 |
|
Vector3d |
var13 |
|
PrefabEditingMetadata |
var14 |
|
|
var14 |
|
|
var14 |
|
Vector3d |
var15 |
|
double |
var16 |
|
|
var16 |
|
Vector3i |
var2 |
|
Vector3d |
var20 |
|
double |
var21 |
|
Vector3i |
var23 |
|
boolean |
var25 |
|
Ref |
var3 |
|
CommandBuffer |
var4 |
|
TransformComponent |
var4 |
|
Ref |
var5 |
|
Player |
var6 |
|
PlayerRef |
var7 |
|
UUIDComponent |
var8 |
|
UUID |
var9 |
Методы (9)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
if if(var6 != null) |
|
|
if if(var1 == InteractionType.Primary || var1 == InteractionType.Secondary) |
|
|
if if(var11 == null) |
|
|
if if(var1 == InteractionType.Secondary) |
|
|
if if(var16 > var21) |
|
|
if if(var23 == null) |
|
|
if if(var25) |
|
|
if if(var14 == null) |
|
|
if if(var2 != null) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.buildertools.prefabeditor;
class="kw">import com.hypixel.hytale.builtin.buildertools.BuilderToolsPlugin;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.math.vector.Vector3dUtil;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
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.modules.interaction.interaction.CooldownHandler;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.SimpleInstantInteraction;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
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 java.util.UUID;
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 PrefabSelectionInteraction class="kw">extends SimpleInstantInteraction {
@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");
class="kw">private class="kw">static class="kw">final float ENTITY_TARGET_RADIUS = 50.0F;
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<PrefabSelectionInteraction> CODEC = BuilderCodec.builder(
PrefabSelectionInteraction.class, PrefabSelectionInteraction::new, SimpleInstantInteraction.CODEC
)
.documentation("Interaction that handles the selection functionally for the prefab selection tool.")
.build();
class="kw">public PrefabSelectionInteraction() {
}
@Override
class="kw">protected void firstRun(@Nonnull InteractionType var1, @Nonnull InteractionContext var2, @Nonnull CooldownHandler var3) {
CommandBuffer var4 = var2.getCommandBuffer();
assert var4 != null;
Ref var5 = var2.getEntity();
Player var6 = var4.getComponent(var5, Player.getComponentType());
if (var6 != null) {
PlayerRef var7 = var4.getComponent(var5, PlayerRef.getComponentType());
assert var7 != null;
if (var1 == InteractionType.Primary || var1 == InteractionType.Secondary) {
UUIDComponent var8 = var4.getComponent(var5, UUIDComponent.getComponentType());
assert var8 != null;
UUID var9 = var8.getUuid();
PrefabEditSessionManager var10 = BuilderToolsPlugin.get().getPrefabEditSessionManager();
PrefabEditSession var11 = var10.getPrefabEditSession(var9);
if (var11 == null) {
var7.sendMessage(MESSAGE_COMMANDS_EDIT_PREFAB_NOT_IN_EDIT_SESSION);
} else {
TransformComponent var12 = var4.getComponent(var5, TransformComponent.getComponentType());
assert var12 != null;
Vector3d var13 = var12.getPosition();
PrefabEditingMetadata var14 = null;
if (var1 == InteractionType.Secondary) {
Vector3d var15 = new Vector3d(var13);
var15.y = 0.0;
double var16 = 2.147483647E9;
for (PrefabEditingMetadata var19 : var11.getLoadedPrefabMetadata().values()) {
Vector3d var20 = new Vector3d(
(var19.getMaxPoint().x + var19.getMinPoint().x) / 2.0, 0.0, (var19.getMaxPoint().z + var19.getMinPoint().z) / 2.0
);
double var21 = var20.distance(var15);
if (var16 > var21) {
var16 = var21;
var14 = var19;
}
}
} else {
Vector3i var23 = getTargetLocation(var5, var4);
if (var23 == null) {
var7.sendMessage(MESSAGE_COMMANDS_EDIT_PREFAB_SELECT_ERROR_NO_TARGET_FOUND);
class="kw">return;
}
for (PrefabEditingMetadata var17 : var11.getLoadedPrefabMetadata().values()) {
boolean var25 = var17.isLocationWithinPrefabBoundingBox(var23);
if (var25) {
var14 = var17;
break;
}
}
}
if (var14 == null) {
var7.sendMessage(MESSAGE_COMMANDS_EDIT_PREFAB_SELECT_ERROR_NO_PREFAB_FOUND);
} else {
var11.setSelectedPrefab(var5, var14, var4);
}
}
}
}
}
@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, 50.0F, 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;
}
}
}
}