Direction enum
Пакет: com.hypixel.hytale.builtin.buildertools.commands
Файл: com/hypixel/hytale/builtin/buildertools/commands/ExtendFaceCommand.java
Поля (1)
| Модификаторы | Тип | Имя |
|---|---|---|
|
UP,
DOWN,
EAST,
WEST,
NORTH, |
SOUTH |
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
return |
switchreturn switch(this) |
|
public Vector3i |
toNormalpublic Vector3i toNormal() |
Исходный код
Показать/скрыть
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.server.core.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
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.ArgTypes;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.types.EnumArgumentType;
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.permissions.HytalePermissions;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.mask.BlockPattern;
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 javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;
class="kw">public class ExtendFaceCommand class="kw">extends AbstractPlayerCommand {
class="kw">private class="kw">static class="kw">final EnumArgumentType<ExtendFaceCommand.Direction> DIRECTION_TYPE = new EnumArgumentType<>(
"server.commands.extendface.argtype.direction", ExtendFaceCommand.Direction.class
);
class="kw">private class="kw">static class="kw">final EnumArgumentType<ExtendFaceCommand.ExtrudeFilter> FILTER_TYPE = new EnumArgumentType<>(
"server.commands.extendface.argtype.filter", ExtendFaceCommand.ExtrudeFilter.class
);
class="kw">private class="kw">static class="kw">final EnumArgumentType<ExtendFaceCommand.ExtrudeStrategy> STRATEGY_TYPE = new EnumArgumentType<>(
"server.commands.extendface.argtype.strategy", ExtendFaceCommand.ExtrudeStrategy.class
);
@Nonnull
class="kw">private class="kw">final RequiredArg<Integer> xArg = this.withRequiredArg("x", "server.commands.extendface.x.desc", ArgTypes.INTEGER);
@Nonnull
class="kw">private class="kw">final RequiredArg<Integer> yArg = this.withRequiredArg("y", "server.commands.extendface.y.desc", ArgTypes.INTEGER);
@Nonnull
class="kw">private class="kw">final RequiredArg<Integer> zArg = this.withRequiredArg("z", "server.commands.extendface.z.desc", ArgTypes.INTEGER);
@Nonnull
class="kw">private class="kw">final RequiredArg<Integer> depthArg = this.withRequiredArg("depth", "server.commands.extendface.depth.desc", ArgTypes.INTEGER);
@Nonnull
class="kw">private class="kw">final RequiredArg<Integer> widthArg = this.withRequiredArg("width", "server.commands.extendface.width.desc", ArgTypes.INTEGER);
@Nonnull
class="kw">private class="kw">final RequiredArg<Integer> lengthArg = this.withRequiredArg("length", "server.commands.extendface.length.desc", ArgTypes.INTEGER);
@Nonnull
class="kw">private class="kw">final OptionalArg<ExtendFaceCommand.Direction> directionArg = this.withOptionalArg(
"direction", "server.commands.extendface.direction.desc", DIRECTION_TYPE
);
@Nonnull
class="kw">private class="kw">final OptionalArg<BlockPattern> patternArg = this.withOptionalArg("pattern", "server.commands.extendface.pattern.desc", ArgTypes.BLOCK_PATTERN);
@Nonnull
class="kw">private class="kw">final DefaultArg<ExtendFaceCommand.ExtrudeFilter> filterArg = this.withDefaultArg(
"filter", "server.commands.extendface.filter.desc", FILTER_TYPE, ExtendFaceCommand.ExtrudeFilter.ALL, "All"
);
@Nonnull
class="kw">private class="kw">final DefaultArg<ExtendFaceCommand.ExtrudeStrategy> strategyArg = this.withDefaultArg(
"strategy", "server.commands.extendface.strategy.desc", STRATEGY_TYPE, ExtendFaceCommand.ExtrudeStrategy.DEFAULT, "Default"
);
@Nonnull
class="kw">private class="kw">final FlagArg shrinkFlag = this.withFlagArg("shrink", "server.commands.extendface.shrink.desc");
class="kw">public ExtendFaceCommand() {
super("extendface", "server.commands.extendface.desc");
this.setPermissionGroups("hytale:WorldEditor");
this.requirePermission(HytalePermissions.EDITOR_SELECTION_MODIFY);
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
Player var6 = var2.getComponent(var3, Player.getComponentType());
assert var6 != null;
if (PrototypePlayerBuilderToolSettings.isOkayToDoCommandsOnSelection(var3, var4, var2)) {
int var7 = this.xArg.get(var1);
int var8 = this.yArg.get(var1);
int var9 = this.zArg.get(var1);
Vector3i var10;
if (this.directionArg.provided(var1)) {
var10 = this.directionArg.get(var1).toNormal();
} else {
HeadRotation var11 = var2.getComponent(var3, HeadRotation.getComponentType());
if (var11 == null) {
class="kw">return;
}
var10 = var11.getAxisDirection();
}
int var18 = this.depthArg.get(var1);
int var12 = this.widthArg.get(var1);
int var13 = this.lengthArg.get(var1);
boolean var14 = this.shrinkFlag.get(var1);
BlockPattern var15 = this.patternArg.provided(var1) && !var14 ? this.patternArg.get(var1) : BlockPattern.EMPTY;
String var16 = this.filterArg.get(var1).toFilterMode();
String var17 = this.strategyArg.get(var1).toStrategyMode();
BuilderToolsPlugin.addToQueue(
var6,
var4,
(var11x, var12x, var13x) -> var12x.extendOrShrinkFace(
var7, var8, var9, var10.x(), var10.y(), var10.z(), var18, var12, var13, var14, var15, var16, var17, 1, false, var13x
)
);
}
}
enum Direction {
UP,
DOWN,
EAST,
WEST,
NORTH,
SOUTH;
Direction() {
}
class="kw">public Vector3i toNormal() {
class="kw">return class="kw">switch (this) {
case UP -> new Vector3i(0, 1, 0);
case DOWN -> new Vector3i(0, -1, 0);
case EAST -> new Vector3i(1, 0, 0);
case WEST -> new Vector3i(-1, 0, 0);
case NORTH -> new Vector3i(0, 0, -1);
case SOUTH -> new Vector3i(0, 0, 1);
};
}
}
enum ExtrudeFilter {
ALL,
SAME_MATERIAL,
SAME_SHAPE,
FULL_BLOCKS,
NOT_FULL_BLOCKS;
ExtrudeFilter() {
}
class="kw">public String toFilterMode() {
class="kw">return class="kw">switch (this) {
case ALL -> "All";
case SAME_MATERIAL -> "SameMaterial";
case SAME_SHAPE -> "SameShape";
case FULL_BLOCKS -> "FullBlocks";
case NOT_FULL_BLOCKS -> "NotFullBlocks";
};
}
}
enum ExtrudeStrategy {
ALL,
DEFAULT;
ExtrudeStrategy() {
}
class="kw">public String toStrategyMode() {
class="kw">return class="kw">switch (this) {
case ALL -> "All";
case DEFAULT -> "Default";
};
}
}
}