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