PrefabEditSaveAsCommand class
Пакет: com.hypixel.hytale.builtin.buildertools.prefabeditor.commands
Файл: com/hypixel/hytale/builtin/buildertools/prefabeditor/commands/PrefabEditSaveAsCommand.java
extends: AbstractAsyncPlayerCommand
Поля (16)
| Модификаторы | Тип | Имя |
|---|---|---|
|
PrefabSaverSettings |
var10 |
|
boolean |
var11 |
|
boolean |
var12 |
|
PrefabEditingMetadata |
var13 |
|
String |
var14 |
|
Path |
var15 |
|
AssetPack |
var16 |
|
Path |
var17 |
|
String |
var18 |
|
Path |
var19 |
|
|
var19 |
|
BlockSelection |
var20 |
|
Player |
var6 |
|
UUID |
var7 |
|
PrefabEditSessionManager |
var8 |
|
PrefabEditSession |
var9 |
Методы (5)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
if if(var9 == null) |
|
|
if if(var12) |
|
|
if if(var16 == null) |
|
|
if if(var13 == null) |
abstract |
|
super super("saveas", "server.commands.editprefab.saveAs.desc") |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.buildertools.prefabeditor.commands;
class="kw">import com.hypixel.hytale.assetstore.AssetPack;
class="kw">import com.hypixel.hytale.builtin.buildertools.BuilderToolsPlugin;
class="kw">import com.hypixel.hytale.builtin.buildertools.BuilderToolsUserData;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.PrefabEditSession;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.PrefabEditSessionManager;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.PrefabEditingMetadata;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.saving.PrefabSaver;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.saving.PrefabSaverSettings;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.saving.SupportMode;
class="kw">import com.hypixel.hytale.common.util.PathUtil;
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.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.modules.singleplayer.SingleplayerModule;
class="kw">import com.hypixel.hytale.server.core.prefab.PrefabFormat;
class="kw">import com.hypixel.hytale.server.core.prefab.PrefabStore;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.standard.BlockSelection;
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.nio.file.Path;
class="kw">import java.util.UUID;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import javax.annotation.Nonnull;
class="kw">public class PrefabEditSaveAsCommand class="kw">extends AbstractAsyncPlayerCommand {
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_NOT_IN_EDIT_WORLD = Message.translation("server.commands.editprefab.notInEditWorldWarning");
class="kw">private class="kw">final RequiredArg<String> fileNameArg = this.withRequiredArg("fileNameArg", "server.commands.editprefab.save.saveAs.desc", ArgTypes.STRING);
class="kw">private class="kw">final FlagArg noEntitiesArg = this.withFlagArg("noEntities", "server.commands.editprefab.save.noEntities.desc");
class="kw">private class="kw">final FlagArg overwriteArg = this.withFlagArg("overwrite", "server.commands.editprefab.save.overwrite.desc");
class="kw">private class="kw">final FlagArg emptyArg = this.withFlagArg("empty", "server.commands.editprefab.save.empty.desc");
class="kw">private class="kw">final FlagArg noUpdateArg = this.withFlagArg("noUpdate", "server.commands.editprefab.saveAs.noUpdate.desc");
class="kw">private class="kw">final FlagArg removeSupportArg = this.withFlagArg("removeSupport", "server.commands.editprefab.save.removeSupport.desc");
class="kw">private class="kw">final FlagArg setupSupportArg = this.withFlagArg("setupSupport", "server.commands.editprefab.save.setupSupport.desc");
class="kw">private class="kw">final FlagArg compressedArg = this.withFlagArg("compressed", "server.commands.editprefab.save.compressed.desc");
class="kw">private class="kw">final DefaultArg<String> packArg = this.withDefaultArg(
"pack", "server.commands.editprefab.save.pack.desc", ArgTypes.STRING, "", "server.commands.editprefab.save.pack.desc"
);
class="kw">public PrefabEditSaveAsCommand() {
super("saveas", "server.commands.editprefab.saveAs.desc");
}
@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
) {
Player var6 = var2.getComponent(var3, Player.getComponentType());
assert var6 != null;
UUID var7 = var4.getUuid();
PrefabEditSessionManager var8 = BuilderToolsPlugin.get().getPrefabEditSessionManager();
PrefabEditSession var9 = var8.getPrefabEditSession(var7);
if (var9 == null) {
var1.sendMessage(Message.translation("server.commands.editprefab.notInEditSession"));
class="kw">return CompletableFuture.completedFuture(null);
}
if (!var8.isInEditWorld(var4, var2)) {
var1.sendMessage(MESSAGE_NOT_IN_EDIT_WORLD);
class="kw">return CompletableFuture.completedFuture(null);
}
PrefabSaverSettings var10 = new PrefabSaverSettings();
var10.setBlocks(true);
var10.setEntities(!this.noEntitiesArg.provided(var1));
var10.setOverwriteExisting(this.overwriteArg.get(var1));
var10.setEmpty(this.emptyArg.get(var1));
var10.setPrefabFormat(this.compressedArg.get(var1) ? PrefabFormat.COMPRESSED : PrefabFormat.AUTO);
boolean var11 = this.removeSupportArg.get(var1);
boolean var12 = this.setupSupportArg.get(var1);
if (var12) {
var10.setSupportMode(SupportMode.CALCULATE);
} else if (var11) {
var10.setSupportMode(SupportMode.REMOVE);
}
PrefabEditingMetadata var13 = var9.getSelectedPrefab(var7);
String var14 = this.packArg.get(var1);
Path var15 = var13 != null ? var13.getPrefabPath() : null;
AssetPack var16 = BuilderToolsPlugin.resolveTargetPack(var14 != null ? var14 : "", var15, var6, var1);
if (var16 == null) {
class="kw">return CompletableFuture.completedFuture(null);
}
BuilderToolsUserData.get(var6).setLastSavePack(var16.getName());
Path var17 = PrefabStore.get().getAssetPrefabsPathForPack(var16);
String var18 = this.fileNameArg.get(var1).trim();
if (var18.isBlank()) {
var1.sendMessage(Message.translation("server.builderTools.prefabSave.nameRequired"));
class="kw">return CompletableFuture.completedFuture(null);
}
if (var18.contains("..")) {
var1.sendMessage(Message.translation("server.builderTools.attemptedToSaveOutsidePrefabsDir"));
class="kw">return CompletableFuture.completedFuture(null);
}
if (!PathUtil.isChildOf(var17, var17.resolve(var18)) && !SingleplayerModule.isOwner(var4)) {
var1.sendMessage(Message.translation("server.builderTools.attemptedToSaveOutsidePrefabsDir"));
class="kw">return CompletableFuture.completedFuture(null);
}
Path var19 = var17.resolve(var18);
if (var19.toString().endsWith("/")) {
var1.sendMessage(Message.translation("server.commands.editprefab.saveAs.errors.notAFile"));
class="kw">return CompletableFuture.completedFuture(null);
}
if (!var9.toString().endsWith(".prefab.json")) {
var19 = Path.of(var19 + ".prefab.json");
}
if (var13 == null) {
var1.sendMessage(Message.translation("server.commands.editprefab.noPrefabSelected"));
class="kw">return CompletableFuture.completedFuture(null);
}
BlockSelection var20 = BuilderToolsPlugin.getState(var6, var4).getSelection();
if (var13.getMinPoint().equals(var20.getSelectionMin()) && var13.getMaxPoint().equals(var20.getSelectionMax())) {
if (!this.noUpdateArg.provided(var1)) {
var8.updatePathOfLoadedPrefab(var13.getPrefabPath(), var19);
var13.setPrefabPath(var19);
}
class="kw">return PrefabSaver.savePrefab(
var4,
var5,
var19,
var13.getAnchorPoint(),
var13.getMinPoint(),
var13.getMaxPoint(),
var13.getPastePosition(),
var13.getOriginalFileAnchor(),
var10
)
.thenAccept(
var3x -> var1.sendMessage(
Message.translation("server.commands.editprefab.save." + (var3x != null ? "success.pack" : "failure.pack"))
.param("name", (var3x != null ? var3x : var13.getPrefabPath()).toString())
.param("pack", var16.getName())
)
);
} else {
var1.sendMessage(Message.translation("server.commands.editprefab.save.selectionMismatch"));
class="kw">return CompletableFuture.completedFuture(null);
}
}
}