RelativeDirection enum

Пакет: com.hypixel.hytale.server.core.command.system.arguments.types

Файл: com/hypixel/hytale/server/core/command/system/arguments/types/RelativeDirection.java

Поля (5)

МодификаторыТипИмя
final SingleArgumentType<RelativeDirection> ARGUMENT_TYPE
FORWARD, BACKWARD, LEFT, RIGHT, UP, DOWN
yield null
Vector3i var1
Vector3i var1

Методы (6)

МодификаторыВозвратСигнатура
abstract return new Vector3ireturn new Vector3i(var0.z, 0, -var0.x)
abstract return new Vector3ireturn new Vector3i(-var0.z, 0, var0.x)
if if(var0 == null)
public RelativeDirection parsepublic RelativeDirection parse(@Nonnull String var1, @Nonnull ParseResult var2)
return switchreturn switch(var0)
return switchreturn switch(var0)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.command.system.arguments.types;

class="kw">import com.hypixel.hytale.math.Axis;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.command.system.ParseResult;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.HeadRotation;
class="kw">import java.util.Locale;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3i;

class="kw">public enum RelativeDirection {
   FORWARD,
   BACKWARD,
   LEFT,
   RIGHT,
   UP,
   DOWN;

   class="kw">public class="kw">static class="kw">final SingleArgumentType<RelativeDirection> ARGUMENT_TYPE = new SingleArgumentType<RelativeDirection>(
      "Relative Direction",
      "A direction relative to the player (forward, backward, left, right, up, down)",
      "forward",
      "backward",
      "left",
      "right",
      "up",
      "down"
   ) {
      @Nullable
      class="kw">public RelativeDirection parse(@Nonnull String var1, @Nonnull ParseResult var2) {
         class="kw">return class="kw">switch (var1.toLowerCase(Locale.ROOT)) {
            case "forward", "f" -> RelativeDirection.FORWARD;
            case "backward", "back", "b" -> RelativeDirection.BACKWARD;
            case "left", "l" -> RelativeDirection.LEFT;
            case "right", "r" -> RelativeDirection.RIGHT;
            case "up", "u" -> RelativeDirection.UP;
            case "down", "d" -> RelativeDirection.DOWN;
            class="kw">default -> {
               var2.fail(Message.raw("Invalid direction: " + var1 + ". Use: forward, backward, left, right, up, down"));
               yield null;
            }
         };
      }
   };

   RelativeDirection() {
   }

   @Nonnull
   class="kw">public class="kw">static Vector3i toDirectionVector(@Nullable RelativeDirection var0, @Nonnull HeadRotation var1) {
      if (var0 == null) {
         class="kw">return var1.getAxisDirection();
      }

      class="kw">return class="kw">switch (var0) {
         case FORWARD -> var1.getHorizontalAxisDirection();
         case BACKWARD -> new Vector3i(var1.getHorizontalAxisDirection()).negate();
         case LEFT -> rotateLeft(var1.getHorizontalAxisDirection());
         case RIGHT -> rotateRight(var1.getHorizontalAxisDirection());
         case UP -> new Vector3i(0, 1, 0);
         case DOWN -> new Vector3i(0, -1, 0);
      };
   }

   @Nonnull
   class="kw">public class="kw">static Axis toAxis(@Nonnull RelativeDirection var0, @Nonnull HeadRotation var1) {
      class="kw">return class="kw">switch (var0) {
         case FORWARD, BACKWARD -> getHorizontalAxis(var1);
         case LEFT, RIGHT -> getPerpendicularHorizontalAxis(var1);
         case UP, DOWN -> Axis.Y;
      };
   }

   @Nonnull
   class="kw">private class="kw">static Axis getHorizontalAxis(@Nonnull HeadRotation var0) {
      Vector3i var1 = var0.getHorizontalAxisDirection();
      class="kw">return var1.x() != 0 ? Axis.X : Axis.Z;
   }

   @Nonnull
   class="kw">private class="kw">static Axis getPerpendicularHorizontalAxis(@Nonnull HeadRotation var0) {
      Vector3i var1 = var0.getHorizontalAxisDirection();
      class="kw">return var1.x() != 0 ? Axis.Z : Axis.X;
   }

   @Nonnull
   class="kw">private class="kw">static Vector3i rotateLeft(@Nonnull Vector3i var0) {
      class="kw">return new Vector3i(var0.z, 0, -var0.x);
   }

   @Nonnull
   class="kw">private class="kw">static Vector3i rotateRight(@Nonnull Vector3i var0) {
      class="kw">return new Vector3i(-var0.z, 0, var0.x);
   }
}