CopyCommand class

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

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

extends: AbstractPlayerCommand

Поля (45)

МодификаторыТипИмя
private final FlagArg emptyFlag
private final FlagArg entitiesOnlyFlag
private final FlagArg keepAnchorsFlag
private final FlagArg noEntitiesFlag
private final FlagArg playerAnchorFlag
return
return
int var10
int var10
int var11
int var11
Vector3i var12
int var12
int var13
int var14
int var15
int var16
int var17
Vector3i var18
Player var2
TransformComponent var3
PlayerRef var3
Vector3d var4
Player var4
PlayerRef var5
Player var6
BlockSelection var6
Player var6
BuilderToolsPlugin.BuilderState var7
BlockSelection var7
Vector3i var7
BuilderToolsPlugin.BuilderState var7
boolean var8
Vector3i var8
Vector3i var8
boolean var8
boolean var9
Vector3i var9
boolean var9
private final RequiredArg<Integer> xMaxArg
private final RequiredArg<Integer> xMinArg
private final RequiredArg<Integer> yMaxArg
private final RequiredArg<Integer> yMinArg
private final RequiredArg<Integer> zMaxArg
private final RequiredArg<Integer> zMinArg

Методы (12)

МодификаторыВозвратСигнатура
public CopyRegionCommandpublic CopyRegionCommand()
static void copySelectionvoid copySelection(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1)
static void copySelectionvoid copySelection(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nonnull BuilderToolsPlugin.BuilderState var2, int var3)
protected void executeprotected void execute(@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5)
if if(!var8)
if if(!var9 || var8)
if if(!var2)
if if(var3 == null)
if if(!var8)
if if(!var9 || var8)
abstract super super("copy", "server.commands.copy.desc")
abstract super super("server.commands.copy.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.PrefabCopyException;
class="kw">import com.hypixel.hytale.builtin.buildertools.PrototypePlayerBuilderToolSettings;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.protocol.SoundCategory;
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.arguments.system.FlagArg;
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.basecommands.AbstractPlayerCommand;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.permissions.HytalePermissions;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.standard.BlockSelection;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.SoundUtil;
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 com.hypixel.hytale.server.core.util.TempAssetIdUtil;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3i;

class="kw">public class CopyCommand class="kw">extends AbstractPlayerCommand {
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_BUILDER_TOOLS_COPY_CUT_NO_SELECTION = Message.translation("server.builderTools.copycut.noSelection");
   @Nonnull
   class="kw">private class="kw">final FlagArg noEntitiesFlag = this.withFlagArg("noEntities", "server.commands.copy.noEntities.desc");
   @Nonnull
   class="kw">private class="kw">final FlagArg entitiesOnlyFlag = this.withFlagArg("onlyEntities", "server.commands.copy.entitiesonly.desc");
   @Nonnull
   class="kw">private class="kw">final FlagArg emptyFlag = this.withFlagArg("empty", "server.commands.copy.empty.desc");
   @Nonnull
   class="kw">private class="kw">final FlagArg keepAnchorsFlag = this.withFlagArg("keepanchors", "server.commands.copy.keepanchors.desc");
   @Nonnull
   class="kw">private class="kw">final FlagArg playerAnchorFlag = this.withFlagArg("playerAnchor", "server.commands.copy.playerAnchor.desc");

   class="kw">public CopyCommand() {
      super("copy", "server.commands.copy.desc");
      this.setPermissionGroups("hytale:WorldEditor");
      this.requirePermission(HytalePermissions.EDITOR_SELECTION_CLIPBOARD);
      this.addUsageVariant(new CopyCommand.CopyRegionCommand());
   }

   @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)) {
         BuilderToolsPlugin.BuilderState var7 = BuilderToolsPlugin.getState(var6, var4);
         boolean var8 = this.entitiesOnlyFlag.get(var1);
         boolean var9 = this.noEntitiesFlag.get(var1);
         int var10 = 0;
         if (!var8) {
            var10 |= 8;
         }

         if (this.emptyFlag.get(var1)) {
            var10 |= 4;
         }

         if (this.keepAnchorsFlag.get(var1)) {
            var10 |= 64;
         }

         if (!var9 || var8) {
            var10 |= 16;
         }

         int var11 = var10;
         Vector3i var12 = getPlayerAnchor(var3, var2, this.playerAnchorFlag.get(var1));
         BuilderToolsPlugin.addToQueue(var6, var4, (var4x, var5x, var6x) -> {
            try {
               BlockSelection var7 = var7.getSelection();
               if (var7 == null || !var7.hasSelectionBounds()) {
                  var1.sendMessage(MESSAGE_BUILDER_TOOLS_COPY_CUT_NO_SELECTION);
                  class="kw">return;
               }

               Vector3i var8 = var7.getSelectionMin();
               Vector3i var9 = var7.getSelectionMax();
               var7.copyOrCut(var4x, var8.x(), var8.y(), var8.z(), var9.x(), var9.y(), var9.z(), var11, var12, var6x);
            } catch (PrefabCopyException var10) {
               var1.sendMessage(Message.translation("server.builderTools.copycut.copyFailedReason").param("reason", var10.getMessage()));
            }
         });
      }
   }

   @Nullable
   class="kw">private class="kw">static Vector3i getPlayerAnchor(@Nonnull Ref<EntityStore> var0, @Nonnull Store<EntityStore> var1, boolean var2) {
      if (!var2) {
         class="kw">return null;
      }

      TransformComponent var3 = var1.getComponent(var0, TransformComponent.getComponentType());
      if (var3 == null) {
         class="kw">return null;
      }

      Vector3d var4 = var3.getPosition();
      class="kw">return new Vector3i(MathUtil.floor(var4.x()), MathUtil.floor(var4.y()), MathUtil.floor(var4.z()));
   }

   class="kw">public class="kw">static void copySelection(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1) {
      Player var2 = var1.getComponent(var0, Player.getComponentType());
      assert var2 != null;
      PlayerRef var3 = var1.getComponent(var0, PlayerRef.getComponentType());
      assert var3 != null;
      copySelection(var0, var1, BuilderToolsPlugin.getState(var2, var3), 28);
   }

   class="kw">public class="kw">static void copySelection(
      @Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nonnull BuilderToolsPlugin.BuilderState var2, int var3
   ) {
      Player var4 = var1.getComponent(var0, Player.getComponentType());
      assert var4 != null;
      PlayerRef var5 = var1.getComponent(var0, PlayerRef.getComponentType());
      assert var5 != null;
      BuilderToolsPlugin.addToQueue(var4, var5, (var3x, var4x, var5x) -> {
         try {
            BlockSelection var6 = var2.getSelection();
            if (var6 == null || !var6.hasSelectionBounds()) {
               var5.sendMessage(MESSAGE_BUILDER_TOOLS_COPY_CUT_NO_SELECTION);
               class="kw">return;
            }

            Vector3i var7 = var6.getSelectionMin();
            Vector3i var8 = var6.getSelectionMax();
            var2.copyOrCut(var3x, var7.x(), var7.y(), var7.z(), var8.x(), var8.y(), var8.z(), var3, var5x);
         } catch (PrefabCopyException var9) {
            var5.sendMessage(Message.translation("server.builderTools.copycut.copyFailedReason").param("reason", var9.getMessage()));
         }
      });
   }

   class="kw">private class="kw">static class CopyRegionCommand class="kw">extends AbstractPlayerCommand {
      @Nonnull
      class="kw">private class="kw">final RequiredArg<Integer> xMinArg = this.withRequiredArg("xMin", "server.commands.copy.xMin.desc", ArgTypes.INTEGER);
      @Nonnull
      class="kw">private class="kw">final RequiredArg<Integer> yMinArg = this.withRequiredArg("yMin", "server.commands.copy.yMin.desc", ArgTypes.INTEGER);
      @Nonnull
      class="kw">private class="kw">final RequiredArg<Integer> zMinArg = this.withRequiredArg("zMin", "server.commands.copy.zMin.desc", ArgTypes.INTEGER);
      @Nonnull
      class="kw">private class="kw">final RequiredArg<Integer> xMaxArg = this.withRequiredArg("xMax", "server.commands.copy.xMax.desc", ArgTypes.INTEGER);
      @Nonnull
      class="kw">private class="kw">final RequiredArg<Integer> yMaxArg = this.withRequiredArg("yMax", "server.commands.copy.yMax.desc", ArgTypes.INTEGER);
      @Nonnull
      class="kw">private class="kw">final RequiredArg<Integer> zMaxArg = this.withRequiredArg("zMax", "server.commands.copy.zMax.desc", ArgTypes.INTEGER);
      @Nonnull
      class="kw">private class="kw">final FlagArg noEntitiesFlag = this.withFlagArg("noEntities", "server.commands.copy.noEntities.desc");
      @Nonnull
      class="kw">private class="kw">final FlagArg entitiesOnlyFlag = this.withFlagArg("onlyEntities", "server.commands.copy.entitiesonly.desc");
      @Nonnull
      class="kw">private class="kw">final FlagArg emptyFlag = this.withFlagArg("empty", "server.commands.copy.empty.desc");
      @Nonnull
      class="kw">private class="kw">final FlagArg keepAnchorsFlag = this.withFlagArg("keepanchors", "server.commands.copy.keepanchors.desc");
      @Nonnull
      class="kw">private class="kw">final FlagArg playerAnchorFlag = this.withFlagArg("playerAnchor", "server.commands.copy.playerAnchor.desc");

      class="kw">public CopyRegionCommand() {
         super("server.commands.copy.desc");
      }

      @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)) {
            BuilderToolsPlugin.BuilderState var7 = BuilderToolsPlugin.getState(var6, var4);
            boolean var8 = this.entitiesOnlyFlag.get(var1);
            boolean var9 = this.noEntitiesFlag.get(var1);
            int var10 = 0;
            if (!var8) {
               var10 |= 8;
            }

            if (this.emptyFlag.get(var1)) {
               var10 |= 4;
            }

            if (this.keepAnchorsFlag.get(var1)) {
               var10 |= 64;
            }

            if (!var9 || var8) {
               var10 |= 16;
            }

            int var11 = this.xMinArg.get(var1);
            int var12 = this.yMinArg.get(var1);
            int var13 = this.zMinArg.get(var1);
            int var14 = this.xMaxArg.get(var1);
            int var15 = this.yMaxArg.get(var1);
            int var16 = this.zMaxArg.get(var1);
            int var17 = var10;
            Vector3i var18 = CopyCommand.getPlayerAnchor(var3, var2, this.playerAnchorFlag.get(var1));
            BuilderToolsPlugin.addToQueue(var6, var4, (var10x, var11x, var12x) -> {
               try {
                  var7.copyOrCut(var10x, var11, var12, var13, var14, var15, var16, var17, var18, var12x);
               } catch (PrefabCopyException var14) {
                  var1.sendMessage(Message.translation("server.builderTools.copycut.copyFailedReason").param("reason", var14.getMessage()));
                  SoundUtil.playSoundEvent2d(var10x, TempAssetIdUtil.getSoundEventIndex("CREATE_ERROR"), SoundCategory.UI, var12x);
               }
            });
         }
      }
   }
}