ExtendFaceCommand class

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

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

extends: AbstractPlayerCommand

Поля (20)

МодификаторыТипИмя
ALL, DEFAULT
final EnumArgumentType<ExtendFaceCommand.Direction> DIRECTION_TYPE
ALL, SAME_MATERIAL, SAME_SHAPE, FULL_BLOCKS, NOT_FULL_BLOCKS
UP, DOWN, EAST, WEST, NORTH, SOUTH
return
Vector3i var10
var10
var10
HeadRotation var11
int var12
int var13
boolean var14
BlockPattern var15
String var16
String var17
int var18
Player var6
int var7
int var8
int var9

Методы (11)

МодификаторыВозвратСигнатура
Direction Direction()
ExtrudeFilter ExtrudeFilter()
ExtrudeStrategy ExtrudeStrategy()
if if(var11 == null)
abstract super super("extendface", "server.commands.extendface.desc")
return switchreturn switch(this)
return switchreturn switch(this)
return switchreturn switch(this)
public String toFilterModepublic String toFilterMode()
public Vector3i toNormalpublic Vector3i toNormal()
public String toStrategyModepublic String toStrategyMode()

Исходный код

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