FlipVariant class
Пакет: com.hypixel.hytale.builtin.buildertools.commands
Файл: com/hypixel/hytale/builtin/buildertools/commands/FlipCommand.java
extends: AbstractPlayerCommand
Поля (1)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private final RequiredArg<String> |
targetArg |
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
protected void |
executeprotected void execute(@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5) |
abstract |
|
super super("server.commands.flip.desc") |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.buildertools.commands;
class="kw">import com.hypixel.hytale.builtin.buildertools.BuilderToolsPlugin;
class="kw">import com.hypixel.hytale.builtin.buildertools.PrototypePlayerBuilderToolSettings;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
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.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.ParseResult;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.types.RelativeDirection;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.types.SingleArgumentType;
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.HeadRotation;
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 java.util.Locale;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class FlipCommand class="kw">extends AbstractPlayerCommand {
class="kw">static class="kw">final SingleArgumentType<String> FLIP_TARGET_TYPE = new SingleArgumentType<String>(
"server.commands.flip.direction.desc", "server.commands.flip.direction.desc", "forward", "backward", "left", "right", "up", "down", "X", "Y", "Z"
) {
@Nullable
class="kw">public String parse(@Nonnull String var1, @Nonnull ParseResult var2) {
class="kw">return class="kw">switch (var1.toLowerCase(Locale.ROOT)) {
case "forward", "f", "backward", "back", "b", "left", "l", "right", "r", "up", "u", "down", "d", "x", "y", "z" -> var1.toLowerCase(Locale.ROOT);
class="kw">default -> {
var2.fail(Message.translation("server.commands.flip.direction.invalid").param("input", var1));
yield null;
}
};
}
};
class="kw">public FlipCommand() {
super("flip", "server.commands.flip.desc");
this.setPermissionGroups("hytale:WorldEditor");
this.addUsageVariant(new FlipCommand.FlipVariant());
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
executeFlip(var2, var3, var4, null);
}
@Nullable
class="kw">static Axis resolveTarget(@Nonnull String var0, @Nullable HeadRotation var1) {
class="kw">return class="kw">switch (var0) {
case "x" -> Axis.X;
case "y" -> Axis.Y;
case "z" -> Axis.Z;
class="kw">default -> {
if (var1 == null) {
yield null;
} else {
RelativeDirection var4 = class="kw">switch (var0) {
case "f", "forward" -> RelativeDirection.FORWARD;
case "b", "back", "backward" -> RelativeDirection.BACKWARD;
case "l", "left" -> RelativeDirection.LEFT;
case "r", "right" -> RelativeDirection.RIGHT;
case "u", "up" -> RelativeDirection.UP;
class="kw">default -> RelativeDirection.DOWN;
};
yield RelativeDirection.toAxis(var4, var1);
}
}
};
}
class="kw">static void executeFlip(@Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull PlayerRef var2, @Nullable String var3) {
Player var4 = var0.getComponent(var1, Player.getComponentType());
assert var4 != null;
if (PrototypePlayerBuilderToolSettings.isOkayToDoCommandsOnSelection(var1, var2, var0)) {
HeadRotation var5 = var0.getComponent(var1, HeadRotation.getComponentType());
Axis var6;
if (var3 == null) {
if (var5 == null) {
class="kw">return;
}
var6 = var5.getAxis();
} else {
var6 = resolveTarget(var3, var5);
if (var6 == null) {
class="kw">return;
}
}
BuilderToolsPlugin.addToQueue(var4, var2, (var1x, var2x, var3x) -> var2x.flip(var1x, var6, var3x));
}
}
class="kw">private class="kw">static class FlipVariant class="kw">extends AbstractPlayerCommand {
@Nonnull
class="kw">private class="kw">final RequiredArg<String> targetArg = this.withRequiredArg("direction", "server.commands.flip.direction.desc", FlipCommand.FLIP_TARGET_TYPE);
class="kw">public FlipVariant() {
super("server.commands.flip.desc");
this.setPermissionGroups("hytale:WorldEditor");
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
FlipCommand.executeFlip(var2, var3, var4, this.targetArg.get(var1));
}
}
}