PrefabEditLoadCommand class

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

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

extends: AbstractAsyncPlayerCommand

Поля (8)

МодификаторыТипИмя
final int DEFAULT_PASTE_LEVEL_GOAL
private static final Message MESSAGE_COMMANDS_PREFAB_EDIT_SESSION_MANAGER_EXISTING_EDIT_SESSION
PrefabEditSessionManager var6
PrefabEditorCreationSettings var6
Player var7
Player var7
CompletableFuture var8
Message var9

Методы (4)

МодификаторыВозвратСигнатура
new AbstractPlayerCommandnew AbstractPlayerCommand("server.commands.editprefab.load.desc")
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 == null)
abstract super super("load", "server.commands.editprefab.load.desc")

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.buildertools.prefabeditor.commands;

class="kw">import com.hypixel.hytale.builtin.buildertools.BuilderToolsPlugin;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.PrefabEditSessionManager;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.PrefabEditorCreationSettings;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.enums.PrefabAlignment;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.enums.PrefabRootDirectory;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.enums.PrefabRowSplitMode;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.enums.PrefabStackingAxis;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.enums.WorldGenType;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.ui.PrefabEditorLoadOptionsPage;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.ui.PrefabEditorLoadSettingsPage;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
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.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.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.AbstractAsyncPlayerCommand;
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.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.List;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import javax.annotation.Nonnull;

class="kw">public class PrefabEditLoadCommand class="kw">extends AbstractAsyncPlayerCommand {
   class="kw">public class="kw">static class="kw">final int DEFAULT_PASTE_LEVEL_GOAL = 55;
   class="kw">public class="kw">static class="kw">final int DEFAULT_BLOCKS_BETWEEN_MULTI_PREFABS = 15;
   @Nonnull
   class="kw">public class="kw">static class="kw">final WorldGenType DEFAULT_WORLD_GEN_TYPE = WorldGenType.FLAT;
   class="kw">public class="kw">static class="kw">final int DEFAULT_BLOCKS_ABOVE_SURFACE = 0;
   @Nonnull
   class="kw">public class="kw">static class="kw">final PrefabStackingAxis DEFAULT_PREFAB_STACKING_AXIS = PrefabStackingAxis.X;
   @Nonnull
   class="kw">public class="kw">static class="kw">final PrefabAlignment DEFAULT_PREFAB_ALIGNMENT = PrefabAlignment.ANCHOR;
   class="kw">public class="kw">static class="kw">final int MAX_BLOCKS_BETWEEN_EACH_PREFAB = 100;
   class="kw">public class="kw">static class="kw">final int MAX_BLOCKS_UNTIL_SURFACE = 120;
   @Nonnull
   class="kw">public class="kw">static class="kw">final PrefabRootDirectory DEFAULT_PREFAB_ROOT_DIRECTORY = PrefabRootDirectory.ASSET;
   @Nonnull
   class="kw">public class="kw">static class="kw">final PrefabRowSplitMode DEFAULT_ROW_SPLIT_MODE = PrefabRowSplitMode.BY_ALL_SUBFOLDERS;
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_PREFAB_EDIT_SESSION_MANAGER_EXISTING_EDIT_SESSION = Message.translation(
      "server.commands.prefabeditsessionmanager.existingEditSession"
   );
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_EDIT_PREFAB_LOADING = Message.translation("server.commands.editprefab.loading");
   @Nonnull
   class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_EDIT_PREFAB_SOMETHING_WENT_WRONG = Message.translation("server.commands.editprefab.somethingWentWrong");
   @Nonnull
   class="kw">private class="kw">final RequiredArg<PrefabRootDirectory> prefabPathArg = this.withRequiredArg(
      "prefabPath", "server.commands.editprefab.load.path.desc", ArgTypes.forEnum("PrefabPath", PrefabRootDirectory.class)
   );
   @Nonnull
   class="kw">private class="kw">final RequiredArg<List<String>> prefabNameArg = this.withListRequiredArg("prefabName", "server.commands.editprefab.load.name.desc", ArgTypes.STRING);
   @Nonnull
   class="kw">private class="kw">final DefaultArg<Integer> pasteLevelGoalArg = this.withDefaultArg(
         "pasteLevelGoal",
         "server.commands.editprefab.load.pasteLevelGoal.desc",
         ArgTypes.INTEGER,
         55,
         "server.commands.editprefab.load.pasteLevelGoal.class="kw">default.desc"
      )
      .addValidator(Validators.range(0, 320));
   @Nonnull
   class="kw">private class="kw">final DefaultArg<Integer> blocksBetweenMultiPrefabsArg = this.withDefaultArg(
         "spacing", "server.commands.editprefab.load.spacing.desc", ArgTypes.INTEGER, 15, "server.commands.editprefab.load.spacing.class="kw">default.desc"
      )
      .addValidator(Validators.range(0, 100));
   @Nonnull
   class="kw">private class="kw">final DefaultArg<WorldGenType> worldGenTypeArg = this.withDefaultArg(
      "worldgen",
      "server.commands.editprefab.load.worldGenType.desc",
      ArgTypes.forEnum("WorldGenType", WorldGenType.class),
      DEFAULT_WORLD_GEN_TYPE,
      "server.commands.editprefab.load.worldGenType.class="kw">default.desc"
   );
   @Nonnull
   class="kw">private class="kw">final DefaultArg<Integer> flatNumBlocksBelowArg = this.withDefaultArg(
         "blocksAboveSurface",
         "server.commands.editprefab.load.numBlocksToSurface.desc",
         ArgTypes.INTEGER,
         0,
         "server.commands.editprefab.load.numBlocksToSurface.class="kw">default.desc"
      )
      .addValidator(Validators.range(0, 120))
      .availableOnlyIfAll(this.worldGenTypeArg);
   @Nonnull
   class="kw">private class="kw">final DefaultArg<PrefabStackingAxis> axisArg = this.withDefaultArg(
         "stackingAxis",
         "server.commands.editprefab.load.axis.desc",
         ArgTypes.forEnum("Stacking Axis", PrefabStackingAxis.class),
         DEFAULT_PREFAB_STACKING_AXIS,
         "server.commands.editprefab.load.axis.class="kw">default.desc"
      )
      .addAliases("axis");
   @Nonnull
   class="kw">private class="kw">final DefaultArg<PrefabAlignment> alignmentArg = this.withDefaultArg(
      "alignment",
      "server.commands.editprefab.load.alignment.desc",
      ArgTypes.forEnum("Alignment", PrefabAlignment.class),
      PrefabAlignment.ANCHOR,
      "server.commands.editprefab.load.alignment.class="kw">default.desc"
   );
   @Nonnull
   class="kw">private class="kw">final FlagArg recursiveArg = this.withFlagArg("recursive", "server.commands.editprefab.load.recursive.desc");
   @Nonnull
   class="kw">private class="kw">final FlagArg noRecursiveArg = this.withFlagArg("noRecursive", "server.commands.editprefab.load.noRecursive.desc").addAliases("no-recursive");
   @Nonnull
   class="kw">private class="kw">final FlagArg loadChildrenArg = this.withFlagArg("loadChildren", "server.commands.editprefab.load.loadChildren.desc").addAliases("children");
   @Nonnull
   class="kw">private class="kw">final FlagArg loadEntitiesArg = this.withFlagArg("loadEntities", "server.commands.editprefab.load.loadEntities.desc").addAliases("entities");

   class="kw">public PrefabEditLoadCommand() {
      super("load", "server.commands.editprefab.load.desc");
      this.addUsageVariant(
         new AbstractPlayerCommand("server.commands.editprefab.load.desc") {
            @Nonnull
            class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_PREFAB_EDIT_SESSION_MANAGER_EXISTING_EDIT_SESSION = Message.translation(
               "server.commands.prefabeditsessionmanager.existingEditSession"
            );

            @Override
            class="kw">protected void execute(
               @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
            ) {
               PrefabEditSessionManager var6 = BuilderToolsPlugin.get().getPrefabEditSessionManager();
               Player var7 = var2.getComponent(var3, Player.getComponentType());
               assert var7 != null;
               if (var6.isEditingAPrefab(var4.getUuid())) {
                  if (!var6.isInEditWorld(var4, var2)) {
                     var7.getPageManager().openCustomPage(var3, var2, new PrefabEditorLoadOptionsPage(var4, var5));
                  } else {
                     var1.sendMessage(MESSAGE_COMMANDS_PREFAB_EDIT_SESSION_MANAGER_EXISTING_EDIT_SESSION);
                  }
               } else {
                  var7.getPageManager().openCustomPage(var3, var2, new PrefabEditorLoadSettingsPage(var4));
               }
            }
         }
      );
   }

   @Nonnull
   @Override
   class="kw">protected CompletableFuture<Void> executeAsync(
      @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
   ) {
      if (BuilderToolsPlugin.get().getPrefabEditSessionManager().isEditingAPrefab(var4.getUuid())) {
         var1.sendMessage(MESSAGE_COMMANDS_PREFAB_EDIT_SESSION_MANAGER_EXISTING_EDIT_SESSION);
         class="kw">return CompletableFuture.completedFuture(null);
      } else {
         PrefabEditorCreationSettings var6 = new PrefabEditorCreationSettings(
            this.prefabPathArg.get(var1),
            this.prefabNameArg.get(var1),
            this.pasteLevelGoalArg.get(var1),
            this.blocksBetweenMultiPrefabsArg.get(var1),
            this.worldGenTypeArg.get(var1),
            this.flatNumBlocksBelowArg.get(var1),
            this.axisArg.get(var1),
            this.alignmentArg.get(var1),
            this.recursiveArg.get(var1) || !this.noRecursiveArg.get(var1),
            this.loadChildrenArg.get(var1),
            this.loadEntitiesArg.get(var1),
            false,
            DEFAULT_ROW_SPLIT_MODE,
            "Env_Zone1_Plains",
            "#5B9E28"
         );
         Player var7 = var2.getComponent(var3, Player.getComponentType());
         assert var7 != null;
         var1.sendMessage(MESSAGE_COMMANDS_EDIT_PREFAB_LOADING);
         CompletableFuture var8 = BuilderToolsPlugin.get().getPrefabEditSessionManager().loadPrefabAndCreateEditSession(var3, var7, var6, var2);
         if (var8 == null) {
            Message var9 = var6.getFailureMessage();
            var1.sendMessage(var9 != null ? var9 : MESSAGE_COMMANDS_EDIT_PREFAB_SOMETHING_WENT_WRONG);
            class="kw">return CompletableFuture.completedFuture(null);
         } else {
            class="kw">return var8;
         }
      }
   }
}