ExtrudeFilter enum

Пакет: com.hypixel.hytale.builtin.buildertools.commands

Файл: com/hypixel/hytale/builtin/buildertools/commands/ExtendFaceCommand.java

Поля (1)

МодификаторыТипИмя
ALL, SAME_MATERIAL, SAME_SHAPE, FULL_BLOCKS, NOT_FULL_BLOCKS

Методы (2)

МодификаторыВозвратСигнатура
return switchreturn switch(this)
public String toFilterModepublic String toFilterMode()

Исходный код

Показать/скрыть
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";
         };
      }
   }
}