WorldPathBuilderClearCommand class

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

Файл: com/hypixel/hytale/builtin/path/commands/WorldPathBuilderCommand.java

extends: AbstractPlayerCommand

Поля (2)

МодификаторыТипИмя
private static final Message MESSAGE_UNIVERSE_WORLD_PATH_POINTS_CLEARED
WorldPathBuilder var6

Методы (3)

МодификаторыВозвратСигнатура
protected void executeprotected void execute(@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5)
if if(var6 != null)
abstract super super("clear", "server.commands.worldpath.builder.clear.desc")

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.path.WorldPathBuilder;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.vector.Transform;
class="kw">import com.hypixel.hytale.server.core.HytaleServer;
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.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.basecommands.AbstractCommandCollection;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.teleport.Teleport;
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.path.WorldPath;
class="kw">import com.hypixel.hytale.server.core.universe.world.path.WorldPathConfig;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.concurrent.ScheduledFuture;
class="kw">import java.util.concurrent.TimeUnit;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class WorldPathBuilderCommand class="kw">extends AbstractCommandCollection {
   class="kw">public WorldPathBuilderCommand() {
      super("builder", "server.commands.worldpath.builder.desc");
      this.addSubCommand(new WorldPathBuilderCommand.WorldPathBuilderStopCommand());
      this.addSubCommand(new WorldPathBuilderCommand.WorldPathBuilderLoadCommand());
      this.addSubCommand(new WorldPathBuilderCommand.WorldPathBuilderSimulateCommand());
      this.addSubCommand(new WorldPathBuilderCommand.WorldPathBuilderClearCommand());
      this.addSubCommand(new WorldPathBuilderCommand.WorldPathBuilderAddCommand());
      this.addSubCommand(new WorldPathBuilderCommand.WorldPathBuilderSetCommand());
      this.addSubCommand(new WorldPathBuilderCommand.WorldPathBuilderGotoCommand());
      this.addSubCommand(new WorldPathBuilderCommand.WorldPathBuilderRemoveCommand());
      this.addSubCommand(new WorldPathBuilderCommand.WorldPathBuilderSaveCommand());
   }

   @Nonnull
   class="kw">private class="kw">static WorldPathBuilder createBuilder(@Nonnull Ref<EntityStore> var0, @Nonnull Store<EntityStore> var1, @Nullable WorldPath var2) {
      UUIDComponent var3 = var1.getComponent(var0, UUIDComponent.getComponentType());
      assert var3 != null;
      String var4 = "Builder-" + var3.getUuid();
      WorldPathBuilder var5 = new WorldPathBuilder();
      if (var2 == null) {
         var5.setPath(new WorldPath(var4, new ObjectArrayList()));
      } else {
         var5.setPath(new WorldPath(var4, new ObjectArrayList(var2.getWaypoints())));
      }

      class="kw">return var5;
   }

   @Nullable
   class="kw">private class="kw">static WorldPathBuilder getBuilder(@Nonnull Ref<EntityStore> var0, @Nonnull Store<EntityStore> var1) {
      class="kw">return var1.getComponent(var0, WorldPathBuilder.getComponentType());
   }

   @Nonnull
   class="kw">private class="kw">static WorldPathBuilder getOrCreateBuilder(@Nonnull Ref<EntityStore> var0, @Nonnull Store<EntityStore> var1) {
      WorldPathBuilder var2 = var1.getComponent(var0, WorldPathBuilder.getComponentType());
      class="kw">return var2 != null ? var2 : putBuilder(var0, var1, createBuilder(var0, var1, null));
   }

   @Nullable
   class="kw">private class="kw">static WorldPath removeBuilder(@Nonnull Ref<EntityStore> var0, @Nonnull Store<EntityStore> var1) {
      WorldPathBuilder var2 = var1.getComponent(var0, WorldPathBuilder.getComponentType());
      if (var2 != null) {
         var1.removeComponent(var0, WorldPathBuilder.getComponentType());
         class="kw">return var2.getPath();
      } else {
         class="kw">return null;
      }
   }

   @Nonnull
   class="kw">private class="kw">static WorldPathBuilder putBuilder(@Nonnull Ref<EntityStore> var0, @Nonnull Store<EntityStore> var1, @Nonnull WorldPathBuilder var2) {
      var1.putComponent(var0, WorldPathBuilder.getComponentType(), var2);
      class="kw">return var2;
   }

   class="kw">private class="kw">static class WorldPathBuilderAddCommand class="kw">extends AbstractPlayerCommand {
      @Nonnull
      class="kw">private class="kw">static class="kw">final Message MESSAGE_UNIVERSE_WORLD_PATH_POINT_ADDED = Message.translation("server.universe.worldpath.pointAdded");

      class="kw">public WorldPathBuilderAddCommand() {
         super("add", "server.commands.worldpath.builder.add.desc");
      }

      @Override
      class="kw">protected void execute(
         @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
      ) {
         TransformComponent var6 = var2.getComponent(var3, TransformComponent.getComponentType());
         assert var6 != null;
         Transform var7 = new Transform(var6.getTransform());
         WorldPathBuilderCommand.getOrCreateBuilder(var3, var2).getPath().getWaypoints().add(var7);
         var1.sendMessage(MESSAGE_UNIVERSE_WORLD_PATH_POINT_ADDED);
      }
   }

   class="kw">private class="kw">static class WorldPathBuilderClearCommand class="kw">extends AbstractPlayerCommand {
      @Nonnull
      class="kw">private class="kw">static class="kw">final Message MESSAGE_UNIVERSE_WORLD_PATH_POINTS_CLEARED = Message.translation("server.universe.worldpath.pointsCleared");

      class="kw">public WorldPathBuilderClearCommand() {
         super("clear", "server.commands.worldpath.builder.clear.desc");
      }

      @Override
      class="kw">protected void execute(
         @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
      ) {
         WorldPathBuilder var6 = WorldPathBuilderCommand.getBuilder(var3, var2);
         if (var6 != null) {
            var6.getPath().getWaypoints().clear();
            var1.sendMessage(MESSAGE_UNIVERSE_WORLD_PATH_POINTS_CLEARED);
         }
      }
   }

   class="kw">private class="kw">static class WorldPathBuilderGotoCommand class="kw">extends AbstractPlayerCommand {
      @Nonnull
      class="kw">private class="kw">final RequiredArg<Integer> indexArg = this.withRequiredArg("index", "server.commands.worldpath.builder.goto.index.desc", ArgTypes.INTEGER);

      class="kw">public WorldPathBuilderGotoCommand() {
         super("goto", "server.commands.worldpath.builder.goto.desc");
      }

      @Override
      class="kw">protected void execute(
         @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
      ) {
         WorldPathBuilder var6 = WorldPathBuilderCommand.getBuilder(var3, var2);
         if (var6 != null) {
            Integer var7 = this.indexArg.get(var1);
            WorldPath var8 = var6.getPath();
            Transform var9 = var8.getWaypoints().get(var7);
            Teleport var10 = Teleport.createForPlayer(null, var9);
            var2.addComponent(var3, Teleport.getComponentType(), var10);
            var1.sendMessage(Message.translation("server.universe.worldpath.teleportedToPoint").param("index", var7));
         }
      }
   }

   class="kw">private class="kw">static class WorldPathBuilderLoadCommand class="kw">extends AbstractPlayerCommand {
      @Nonnull
      class="kw">private class="kw">final RequiredArg<String> nameArg = this.withRequiredArg("name", "server.commands.worldpath.builder.load.name.desc", ArgTypes.STRING);

      class="kw">public WorldPathBuilderLoadCommand() {
         super("load", "server.commands.worldpath.builder.load.desc");
      }

      @Override
      class="kw">protected void execute(
         @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
      ) {
         String var6 = this.nameArg.get(var1);
         WorldPath var7 = var5.getWorldPathConfig().getPath(var6);
         if (var7 == null) {
            var1.sendMessage(Message.translation("server.universe.worldpath.noPathFound").param("path", var6));
         } else {
            WorldPathBuilderCommand.putBuilder(var3, var2, WorldPathBuilderCommand.createBuilder(var3, var2, var7));
         }
      }
   }

   class="kw">private class="kw">static class WorldPathBuilderRemoveCommand class="kw">extends AbstractPlayerCommand {
      @Nonnull
      class="kw">private class="kw">final RequiredArg<Integer> indexArg = this.withRequiredArg("index", "server.commands.worldpath.builder.remove.index.desc", ArgTypes.INTEGER);

      class="kw">public WorldPathBuilderRemoveCommand() {
         super("remove", "server.commands.worldpath.builder.remove.desc");
      }

      @Override
      class="kw">protected void execute(
         @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
      ) {
         WorldPathBuilder var6 = WorldPathBuilderCommand.getBuilder(var3, var2);
         if (var6 != null) {
            int var7 = this.indexArg.get(var1);
            var6.getPath().getWaypoints().remove(var7);
            var1.sendMessage(Message.translation("server.universe.worldpath.removedIndex").param("index", var7));
         }
      }
   }

   class="kw">private class="kw">static class WorldPathBuilderSaveCommand class="kw">extends AbstractPlayerCommand {
      @Nonnull
      class="kw">private class="kw">static class="kw">final Message MESSAGE_UNIVERSE_WORLD_PATH_NO_POINTS_DEFINED = Message.translation("server.universe.worldpath.noPointsDefined");
      @Nonnull
      class="kw">private class="kw">static class="kw">final Message MESSAGE_UNIVERSE_WORLD_PATH_SAVED = Message.translation("server.universe.worldpath.saved");
      @Nonnull
      class="kw">private class="kw">final RequiredArg<String> nameArg = this.withRequiredArg("name", "server.commands.worldpath.builder.save.name.desc", ArgTypes.STRING);

      class="kw">public WorldPathBuilderSaveCommand() {
         super("save", "server.commands.worldpath.builder.save.desc");
      }

      @Override
      class="kw">protected void execute(
         @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
      ) {
         String var6 = this.nameArg.get(var1);
         WorldPath var7 = WorldPathBuilderCommand.removeBuilder(var3, var2);
         if (var7 != null && !var7.getWaypoints().isEmpty()) {
            WorldPathConfig var8 = var5.getWorldPathConfig();
            WorldPath var9 = new WorldPath(var6, var7.getWaypoints());
            var8.putPath(var9);
            var8.save(var5);
            var1.sendMessage(MESSAGE_UNIVERSE_WORLD_PATH_SAVED);
         } else {
            var1.sendMessage(MESSAGE_UNIVERSE_WORLD_PATH_NO_POINTS_DEFINED);
         }
      }
   }

   class="kw">private class="kw">static class WorldPathBuilderSetCommand class="kw">extends AbstractPlayerCommand {
      @Nonnull
      class="kw">private class="kw">static class="kw">final Message MESSAGE_UNIVERSE_WORLD_PATH_POINT_SET = Message.translation("server.universe.worldpath.pointSet");
      @Nonnull
      class="kw">private class="kw">final OptionalArg<Integer> indexArg = this.withOptionalArg("index", "server.commands.worldpath.builder.set.index.desc", ArgTypes.INTEGER);

      class="kw">public WorldPathBuilderSetCommand() {
         super("set", "server.commands.worldpath.builder.set.desc");
      }

      @Override
      class="kw">protected void execute(
         @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
      ) {
         WorldPathBuilder var6 = WorldPathBuilderCommand.getBuilder(var3, var2);
         if (var6 != null) {
            TransformComponent var7 = var2.getComponent(var3, TransformComponent.getComponentType());
            assert var7 != null;
            WorldPath var8 = var6.getPath();
            int var9 = this.indexArg.provided(var1) ? this.indexArg.get(var1) : var8.getWaypoints().size() - 1;
            var8.getWaypoints().set(var9, new Transform(var7.getTransform()));
            var1.sendMessage(MESSAGE_UNIVERSE_WORLD_PATH_POINT_SET);
         }
      }
   }

   class="kw">private class="kw">static class WorldPathBuilderSimulateCommand class="kw">extends AbstractPlayerCommand {
      class="kw">public WorldPathBuilderSimulateCommand() {
         super("simulate", "server.commands.worldpath.builder.simulate.desc");
      }

      @Override
      class="kw">protected void execute(
         @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
      ) {
         WorldPathBuilder var6 = WorldPathBuilderCommand.getBuilder(var3, var2);
         if (var6 != null) {
            ObjectArrayList var7 = new ObjectArrayList(var6.getPath().getWaypoints());
            CompletableFuture var8 = new CompletableFuture<>();
            ScheduledFuture[] var9 = new ScheduledFuture[1];
            var9[0] = HytaleServer.SCHEDULED_EXECUTOR.scheduleWithFixedDelay(() -> {
               Transform var6 = (Transform)var7.removeFirst();
               if (var6 == null) {
                  var8.complete(null);
                  var9[0].cancel(false);
               } else {
                  var5.execute(() -> {
                     Teleport var3 = Teleport.createForPlayer(var6);
                     var2.addComponent(var3, Teleport.getComponentType(), var3);
                  });
               }
            }, 1L, 1L, TimeUnit.SECONDS);
         }
      }
   }

   class="kw">private class="kw">static class WorldPathBuilderStopCommand class="kw">extends AbstractPlayerCommand {
      class="kw">public WorldPathBuilderStopCommand() {
         super("stop", "server.commands.worldpath.builder.stop.desc");
      }

      @Override
      class="kw">protected void execute(
         @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
      ) {
         WorldPathBuilderCommand.removeBuilder(var3, var2);
      }
   }
}