LayersCommand class

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

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

extends: AbstractPlayerCommand

Поля (3)

МодификаторыТипИмя
private final RequiredArg<Integer> countArg
Ref var6
int var7

Методы (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("layers", "server.commands.prefabpreview.layers.desc")

Исходный код

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

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.component.spatial.SpatialResource;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
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.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.modules.entity.EntityModule;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.PersistentPrefabPreview;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
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.Map;
class="kw">import java.util.UUID;
class="kw">import java.util.concurrent.ConcurrentHashMap;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class PrefabPreviewCommand class="kw">extends AbstractCommandCollection {
   class="kw">private class="kw">static class="kw">final Message MESSAGE_NONE = Message.translation("server.commands.prefabpreview.none");
   class="kw">private class="kw">final Map<UUID, Ref<EntityStore>> lastSpawned = new ConcurrentHashMap<>();

   class="kw">public PrefabPreviewCommand() {
      super("prefabpreview", "server.commands.prefabpreview.desc");
      this.setPermissionGroups("hytale:WorldEditor");
      this.addSubCommand(new PrefabPreviewCommand.SpawnCommand());
      this.addSubCommand(new PrefabPreviewCommand.LayersCommand());
      this.addSubCommand(new PrefabPreviewCommand.RemoveCommand());
   }

   @Nullable
   class="kw">private Ref<EntityStore> takeLastSpawned(@Nonnull PlayerRef var1) {
      Ref var2 = this.lastSpawned.get(var1.getUuid());
      class="kw">return var2 != null && var2.isValid() ? var2 : null;
   }

   class="kw">private class LayersCommand class="kw">extends AbstractPlayerCommand {
      @Nonnull
      class="kw">private class="kw">final RequiredArg<Integer> countArg = this.withRequiredArg("count", "server.commands.prefabpreview.layers.count.desc", ArgTypes.INTEGER);

      class="kw">public LayersCommand() {
         super("layers", "server.commands.prefabpreview.layers.desc");
      }

      @Override
      class="kw">protected void execute(
         @Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
      ) {
         Ref var6 = PrefabPreviewCommand.this.takeLastSpawned(var4);
         if (var6 == null) {
            var1.sendMessage(PrefabPreviewCommand.MESSAGE_NONE);
         } else {
            int var7 = this.countArg.get(var1);
            PersistentPrefabPreview.updateLayers(var2, var6, var7);
            var1.sendMessage(Message.translation("server.commands.prefabpreview.layersSet").param("count", var7));
         }
      }
   }

   class="kw">private class RemoveCommand class="kw">extends AbstractPlayerCommand {
      @Nonnull
      class="kw">private class="kw">final OptionalArg<Double> radiusArg = this.<Double>withOptionalArg("radius", "server.commands.prefabpreview.remove.radius.desc", ArgTypes.DOUBLE)
         .addValidator(Validators.greaterThan(0.0));

      class="kw">public RemoveCommand() {
         super("remove", "server.commands.prefabpreview.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
      ) {
         if (this.radiusArg.provided(var1)) {
            this.removeInRadius(var1, var2, var3);
         } else {
            Ref var6 = PrefabPreviewCommand.this.takeLastSpawned(var4);
            if (var6 == null) {
               var1.sendMessage(PrefabPreviewCommand.MESSAGE_NONE);
            } else {
               PersistentPrefabPreview.remove(var2, var6);
               PrefabPreviewCommand.this.lastSpawned.remove(var4.getUuid());
               var1.sendMessage(Message.translation("server.commands.prefabpreview.removed"));
            }
         }
      }

      class="kw">private void removeInRadius(@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3) {
         TransformComponent var4 = var2.getComponent(var3, TransformComponent.getComponentType());
         assert var4 != null;
         double var5 = this.radiusArg.get(var1);
         List var7 = SpatialResource.getThreadLocalReferenceList();
         var2.getResource(EntityModule.get().getNetworkSendableSpatialResourceType()).getSpatialStructure().collect(var4.getPosition(), var5, var7);
         int var8 = 0;

         for (Ref var10 : var7) {
            if (var10.isValid() && var2.getComponent(var10, PersistentPrefabPreview.getComponentType()) != null) {
               PersistentPrefabPreview.remove(var2, var10);
               var8++;
            }
         }

         var1.sendMessage(Message.translation("server.commands.prefabpreview.removedRadius").param("count", var8));
      }
   }

   class="kw">private class SpawnCommand class="kw">extends AbstractPlayerCommand {
      @Nonnull
      class="kw">private class="kw">final RequiredArg<String> prefabArg = this.withRequiredArg(
         "prefab",
         "server.commands.prefabpreview.spawn.prefab.desc",
         new PrefabArgumentType("server.commands.parsing.argtype.prefab.name", "server.commands.parsing.argtype.prefab.usage")
      );
      @Nonnull
      class="kw">private class="kw">final DefaultArg<Integer> layersArg = this.withDefaultArg(
         "layers", "server.commands.prefabpreview.spawn.layers.desc", ArgTypes.INTEGER, Integer.MAX_VALUE, "server.commands.prefabpreview.spawn.layers.class="kw">default"
      );

      class="kw">public SpawnCommand() {
         super("spawn", "server.commands.prefabpreview.spawn.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;
         Vector3d var7 = new Vector3d(var6.getPosition());
         String var8 = this.prefabArg.get(var1);
         int var9 = this.layersArg.get(var1);
         Ref var10 = PersistentPrefabPreview.spawn(var2, var7, new Rotation3f(), var8, var9);
         PrefabPreviewCommand.this.lastSpawned.put(var4.getUuid(), var10);
         var1.sendMessage(Message.translation("server.commands.prefabpreview.spawned").param("prefab", var8));
      }
   }
}