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