PrefabPreviewCommand class

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

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

extends: AbstractCommandCollection

Поля (18)

МодификаторыТипИмя
final Message MESSAGE_NONE
private final RequiredArg<Integer> countArg
private final DefaultArg<Integer> layersArg
private final RequiredArg<String> prefabArg
private final OptionalArg<Double> radiusArg
Ref var10
Ref var2
TransformComponent var4
double var5
Ref var6
Ref var6
TransformComponent var6
int var7
List var7
Vector3d var7
int var8
String var8
int var9

Методы (14)

МодификаторыВозвратСигнатура
public LayersCommandpublic LayersCommand()
public RemoveCommandpublic RemoveCommand()
public SpawnCommandpublic SpawnCommand()
protected void executeprotected void execute(@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5)
protected void executeprotected void execute(@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5)
protected void executeprotected void execute(@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5)
for for(Ref var10 : var7)
if if(var6 == null)
if if(var6 == null)
private void removeInRadiusprivate void removeInRadius(@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3)
abstract super super("prefabpreview", "server.commands.prefabpreview.desc")
abstract super super("layers", "server.commands.prefabpreview.layers.desc")
abstract super super("remove", "server.commands.prefabpreview.remove.desc")
abstract super super("spawn", "server.commands.prefabpreview.spawn.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));
      }
   }
}