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));
}
}
}