PrefabEditorLoadSettingsPage class
Пакет: com.hypixel.hytale.builtin.buildertools.prefabeditor.ui
Файл: com/hypixel/hytale/builtin/buildertools/prefabeditor/ui/PrefabEditorLoadSettingsPage.java
extends: InteractiveCustomUIPage<PrefabEditorLoadSettingsPage.PageData>
Поля (180)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public static final String |
ALIGNMENT_METHOD |
|
public static final String |
BLOCKS_BETWEEN_PREFABS |
|
public static final String |
BROWSER_FILE |
|
public static final String |
BROWSER_ROOT |
|
public static final String |
BROWSER_SEARCH |
|
public static final String |
CHILDREN |
|
public static final BuilderCodec<PrefabEditorLoadSettingsPage.PageData> |
CODEC |
|
public static final String |
CONFIG_NAME |
|
public static final String |
DESIRED_Y_LEVEL |
|
public static final String |
ENABLE_WORLD_TICKING |
|
public static final String |
ENTITIES |
|
public static final String |
ENVIRONMENT |
|
public static final String |
GRASS_TINT |
final |
HytaleLogger |
LOGGER |
|
public static final String |
NUM_AIR_BEFORE_GROUND |
|
public static final String |
PASTE_AXIS |
|
public static final String |
PREFAB_PATHS |
|
Load,
OpenSavePropertiesDialog,
CancelSavePropertiesDialog,
SavePropertiesConfig,
ApplySavedProperties,
Cancel,
CancelLoading,
SavePropertiesNameChanged,
OpenBrowser,
BrowserHome,
BrowserNavigate,
BrowserRootChanged,
BrowserSearch,
AddFolderToList,
ConfirmBrowser,
CancelBrowser,
OpenPackBrowser,
ConfirmPackBrowser,
CancelPackBrowser,
OpenCreatePack,
CreatePack,
CancelCreatePack,
PackSearch, |
PackSelect |
|
public static final String |
RECURSIVE |
|
public static final String |
ROOT_DIR |
|
public static final String |
ROW_SPLIT_MODE |
|
public static final String |
WORLD_GEN_TYPE |
|
public PrefabAlignment |
alignment |
|
public int |
blocksAboveSurface |
|
public int |
blocksBetweenEachPrefab |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
public String |
browserFile |
|
public String |
browserRootStr |
|
public String |
browserSearchStr |
|
UICommandBuilder |
builderx |
|
UICommandBuilder |
builderx |
|
UICommandBuilder |
builderx |
|
UICommandBuilder |
builderx |
|
UICommandBuilder |
builderx |
|
public String |
configName |
|
public boolean |
enableWorldTicking |
|
public String |
environment |
|
public String |
grassTint |
|
public boolean |
loadChildren |
|
public boolean |
loadEntities |
|
public final AssetPackSaveBrowserEventData |
packBrowserData |
|
public int |
pasteYLevelGoal |
|
public PrefabRootDirectory |
prefabRootDirectory |
|
public boolean |
recursive |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
|
return |
|
public PrefabRowSplitMode |
rowSplitMode |
|
public PrefabStackingAxis |
stackingAxis |
|
public PrefabEditorLoadSettingsPage.Action |
uiAction |
|
public String |
unprocessedPrefabPaths |
|
String |
var1 |
|
String |
var1 |
|
List |
var1 |
|
String |
var1 |
|
|
var1 |
|
Message |
var10 |
|
UICommandBuilder |
var10 |
|
String |
var10 |
|
String |
var11 |
|
|
var11 |
|
|
var11 |
|
WorldChunk |
var11 |
|
String |
var11 |
|
|
var11 |
|
String |
var12 |
|
BlockChunk |
var12 |
|
String |
var12 |
|
UICommandBuilder |
var13 |
|
int |
var13 |
|
String |
var13 |
|
List |
var14 |
|
Environment |
var14 |
|
ObjectArrayList |
var15 |
|
UICommandBuilder |
var15 |
|
Color |
var15 |
|
String |
var16 |
|
ObjectArrayList |
var17 |
|
List |
var17 |
|
int |
var17 |
|
ObjectArrayList |
var18 |
|
UICommandBuilder |
var18 |
|
List |
var19 |
|
UICommandBuilder |
var2 |
|
UICommandBuilder |
var2 |
|
UICommandBuilder |
var2 |
|
UICommandBuilder |
var2 |
|
String |
var2 |
|
Path |
var2 |
|
String |
var2 |
|
BlockSelection |
var2 |
|
BuilderToolPrefabPreview |
var2 |
|
Ref |
var2 |
|
Path |
var2 |
|
String |
var2 |
|
ObjectArrayList |
var20 |
|
UICommandBuilder |
var20 |
|
boolean |
var20 |
|
UICommandBuilder |
var21 |
|
ObjectArrayList |
var23 |
|
AssetPack |
var23 |
|
UICommandBuilder |
var24 |
|
UICommandBuilder |
var25 |
|
UICommandBuilder |
var26 |
|
UICommandBuilder |
var27 |
|
UIEventBuilder |
var28 |
|
UIEventBuilder |
var29 |
|
String |
var3 |
|
String |
var3 |
|
String |
var3 |
|
EditorBlocksChange |
var3 |
|
Store |
var3 |
|
String |
var3 |
|
String |
var3 |
|
AssetPack |
var3 |
|
UIEventBuilder |
var30 |
|
UICommandBuilder |
var31 |
|
PrefabEditSessionManager |
var32 |
|
CompletableFuture |
var33 |
|
PrefabEditorCreationSettings |
var34 |
|
PrefabRootDirectory |
var35 |
|
UIEventBuilder |
var36 |
|
String |
var37 |
|
CompletableFuture |
var39 |
|
Player |
var4 |
|
Path |
var4 |
|
UICommandBuilder |
var4 |
|
World |
var4 |
|
String |
var4 |
|
String |
var4 |
|
String |
var4 |
|
Player |
var5 |
|
PlayerRef |
var5 |
|
UICommandBuilder |
var5 |
|
UIEventBuilder |
var5 |
|
Vector3d |
var5 |
|
List |
var5 |
|
String |
var5 |
|
Path |
var5 |
|
Path |
var5 |
|
AssetPackSaveBrowser.ActionResult |
var6 |
|
UIEventBuilder |
var6 |
|
UICommandBuilder |
var6 |
|
int |
var6 |
|
int |
var6 |
|
List |
var6 |
|
Path |
var6 |
|
UICommandBuilder |
var7 |
|
Path |
var7 |
|
int |
var7 |
|
Path |
var7 |
|
UICommandBuilder |
var8 |
|
UICommandBuilder |
var8 |
|
int |
var8 |
|
PrefabRootDirectory |
var9 |
|
UIEventBuilder |
var9 |
|
long |
var9 |
|
String |
var9 |
|
public WorldGenType |
worldGenType |
Методы (54)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
Action Action() |
|
public |
PageDatapublic PageData() |
private |
void |
applyTintFromPlayerPositionvoid applyTintFromPlayerPosition(@Nonnull BuilderToolPrefabPreview var1) |
private |
void |
buildAssetsBrowserListvoid buildAssetsBrowserList(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2) |
private |
void |
buildBrowserListvoid buildBrowserList(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2) |
private |
void |
buildRegularBrowserListvoid buildRegularBrowserList(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2) |
private |
void |
clearBrowserPreviewvoid clearBrowserPreview() |
|
|
for for(FileListProvider.FileEntry var8 : var5) |
|
|
for for(Path var10 : var8) |
|
|
for for(File var19 : var6) |
private |
String |
getCurrentBrowserPathString getCurrentBrowserPath() |
private |
void |
handleAssetsNavigationvoid handleAssetsNavigation(@Nonnull String var1) |
public |
void |
handleDataEventvoid handleDataEvent(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull PrefabEditorLoadSettingsPage.PageData var3) |
private |
void |
handleRegularNavigationvoid handleRegularNavigation(@Nonnull String var1) |
|
|
if if(var5 != null) |
|
|
if if(var6 != null) |
|
|
if if(this.isLoading || this.isShuttingDown) |
|
|
if if(var39 == null) |
|
|
if if(!this.loadingCancelled) |
|
|
if if(var5x != null) |
|
|
if if(var23 == null) |
|
|
if if(var1x != null) |
|
|
if if(this.isShuttingDown) |
|
|
if if(this.loadingWorldName != null) |
|
|
if if(var2x != null) |
|
|
if if(this.inAssetsRoot) |
|
|
if if(var3.browserFile == null) |
|
|
if if(this.inAssetsRoot) |
|
|
if if(var3.browserRootStr == null) |
|
|
if if(this.inAssetsRoot) |
|
|
if if(this.browserRoot == null) |
|
|
if if(var35 != null) |
|
|
if if(var9 != null) |
|
|
if if(!this.loadingCancelled) |
|
|
if if(var4 == null) |
|
|
if if(this.selectedPath != null) |
|
|
if if(this.previewedBrowserPath != null) |
|
|
if if(var1 != null) |
|
|
if if(var2 == null) |
|
|
if if(var14 != null) |
|
|
if if(var15 != null) |
|
|
if if(this.inAssetsRoot) |
|
|
if if(!var20) |
|
|
if if(var3 != null) |
private |
boolean |
isAllowedBrowserRootboolean isAllowedBrowserRoot(@Nonnull String var1) |
private |
void |
onLoadingFailedvoid onLoadingFailed(@Nonnull Message var1) |
private |
void |
onLoadingProgressvoid onLoadingProgress(@Nonnull PrefabLoadingState var1) |
private |
void |
onShutdownProgressvoid onShutdownProgress(@Nonnull PrefabLoadingState var1) |
private |
void |
sendBrowserPreviewvoid sendBrowserPreview(@Nullable Path var1) |
private |
void |
sendBrowserPreviewPacketvoid sendBrowserPreviewPacket(@Nullable BlockSelection var1) |
private |
void |
showMainPageErrorvoid showMainPageError(@Nonnull Message var1) |
abstract |
|
super super(var1, CustomPageLifetime.CanDismissOrCloseThroughInteraction, PrefabEditorLoadSettingsPage.PageData.CODEC) |
|
|
switch switch(var3.uiAction) |
|
public PrefabEditorCreationSettings |
toCreationSettingspublic PrefabEditorCreationSettings toCreationSettings() |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.buildertools.prefabeditor.ui;
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.PrefabEditSessionManager;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.PrefabEditorCreationSettings;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.PrefabLoadingState;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.commands.PrefabEditLoadCommand;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.enums.PrefabAlignment;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.enums.PrefabRootDirectory;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.enums.PrefabRowSplitMode;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.enums.PrefabStackingAxis;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefabeditor.enums.WorldGenType;
class="kw">import com.hypixel.hytale.builtin.buildertools.prefablist.AssetPrefabFileProvider;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
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.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.protocol.Color;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolPrefabPreview;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.CustomPageLifetime;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.CustomUIEventBindingType;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.EditorBlocksChange;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.Page;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.asset.AssetModule;
class="kw">import com.hypixel.hytale.server.core.asset.type.environment.config.Environment;
class="kw">import com.hypixel.hytale.server.core.asset.util.ColorParseUtil;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.pages.InteractiveCustomUIPage;
class="kw">import com.hypixel.hytale.server.core.modules.singleplayer.SingleplayerModule;
class="kw">import com.hypixel.hytale.server.core.prefab.PrefabLoadException;
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.ui.DropdownEntryInfo;
class="kw">import com.hypixel.hytale.server.core.ui.LocalizableString;
class="kw">import com.hypixel.hytale.server.core.ui.Value;
class="kw">import com.hypixel.hytale.server.core.ui.browser.AssetPackSaveBrowser;
class="kw">import com.hypixel.hytale.server.core.ui.browser.AssetPackSaveBrowserConfig;
class="kw">import com.hypixel.hytale.server.core.ui.browser.AssetPackSaveBrowserEventData;
class="kw">import com.hypixel.hytale.server.core.ui.browser.FileListProvider;
class="kw">import com.hypixel.hytale.server.core.ui.builder.EventData;
class="kw">import com.hypixel.hytale.server.core.ui.builder.UICommandBuilder;
class="kw">import com.hypixel.hytale.server.core.ui.builder.UIEventBuilder;
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.chunk.BlockChunk;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
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.io.File;
class="kw">import java.io.IOException;
class="kw">import java.nio.file.DirectoryStream;
class="kw">import java.nio.file.Files;
class="kw">import java.nio.file.Path;
class="kw">import java.nio.file.Paths;
class="kw">import java.util.List;
class="kw">import java.util.Locale;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">public class PrefabEditorLoadSettingsPage class="kw">extends InteractiveCustomUIPage<PrefabEditorLoadSettingsPage.PageData> {
class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
class="kw">private class="kw">static class="kw">final Value<String> BUTTON_HIGHLIGHTED = Value.ref("Pages/BasicTextButton.ui", "SelectedLabelStyle");
class="kw">private class="kw">static class="kw">final String ASSETS_ROOT_KEY = "Assets";
class="kw">private class="kw">static class="kw">final String BASE_PACK_KEY = "HytaleAssets";
class="kw">private class="kw">final AssetPackSaveBrowser packBrowser = new AssetPackSaveBrowser(AssetPackSaveBrowserConfig.defaults());
class="kw">private class="kw">final List<DropdownEntryInfo> savedConfigsDropdown = new ObjectArrayList();
class="kw">private class="kw">volatile boolean isLoading;
class="kw">private class="kw">volatile boolean loadingCancelled;
class="kw">private class="kw">volatile boolean isShuttingDown;
class="kw">private PrefabLoadingState currentLoadingState;
class="kw">private String loadingWorldName;
class="kw">private Path browserRoot;
class="kw">private Path browserCurrent;
class="kw">private String selectedPath;
@Nonnull
class="kw">private String browserSearchQuery = "";
class="kw">private class="kw">final List<String> selectedItems = new ObjectArrayList();
@Nonnull
class="kw">private class="kw">final AssetPrefabFileProvider assetProvider = new AssetPrefabFileProvider();
class="kw">private class="kw">static class="kw">final int PREVIEW_TILT = 23;
class="kw">private class="kw">static class="kw">final int PREVIEW_SPIN_SPEED = 27;
class="kw">private class="kw">static class="kw">final int PREVIEW_MAX_SIZE = 100;
class="kw">private class="kw">static class="kw">final int DEFAULT_BIOME_TINT = ColorParseUtil.colorToARGBInt(PrefabEditSessionManager.DEFAULT_TINT) & 16777215;
class="kw">private class="kw">static class="kw">final int DEFAULT_WATER_TINT = ColorParseUtil.colorToARGBInt(Environment.getUnknownFor("").getWaterTint()) & 16777215;
@Nullable
class="kw">private Path previewedBrowserPath;
@Nonnull
class="kw">private PrefabRootDirectory resolvedRootDirectory = PrefabRootDirectory.ASSET;
class="kw">private boolean inAssetsRoot = false;
@Nonnull
class="kw">private Path assetsCurrentDir = Paths.get("");
class="kw">public PrefabEditorLoadSettingsPage(@Nonnull PlayerRef var1) {
super(var1, CustomPageLifetime.CanDismissOrCloseThroughInteraction, PrefabEditorLoadSettingsPage.PageData.CODEC);
}
@Override
class="kw">public void build(@Nonnull Ref<EntityStore> var1, @Nonnull UICommandBuilder var2, @Nonnull UIEventBuilder var3, @Nonnull Store<EntityStore> var4) {
var2.append("Pages/PrefabEditorSettings.ui");
Player var5 = var4.getComponent(var1, Player.getComponentType());
if (var5 != null) {
this.packBrowser.setSelectedPackKey(BuilderToolsUserData.get(var5).getLastSavePack());
}
this.savedConfigsDropdown.add(new DropdownEntryInfo(LocalizableString.fromMessageId("server.commands.editprefab.ui.savedConfigs.noneSelected"), ""));
for (String var7 : PrefabEditorCreationSettings.getAssetMap().getAssetMap().keySet()) {
this.savedConfigsDropdown.add(new DropdownEntryInfo(LocalizableString.fromString(var7), var7));
}
var2.set("#SavedConfigs #Input.Entries", this.savedConfigsDropdown);
var2.set("#SavedConfigs #Input.Value", "");
ObjectArrayList var15 = new ObjectArrayList();
for (WorldGenType var10 : WorldGenType.values()) {
var15.add(new DropdownEntryInfo(LocalizableString.fromMessageId(var10.getLocalizationString()), var10.name()));
}
var2.set("#MainPage #WorldGenType #Input.Entries", var15);
var2.set("#MainPage #WorldGenType #Input.Value", PrefabEditLoadCommand.DEFAULT_WORLD_GEN_TYPE.name());
ObjectArrayList var17 = new ObjectArrayList();
Environment.getAssetMap()
.getAssetMap()
.keySet()
.stream()
.sorted()
.forEach(var1x -> var17.add(new DropdownEntryInfo(LocalizableString.fromString(var1x), var1x)));
var2.set("#MainPage #Environment #Input.Entries", var17);
var2.set("#MainPage #Environment #Input.Value", "Env_Zone1_Plains");
var2.set("#MainPage #GrassTint #Input.Color", "#5B9E28");
ObjectArrayList var18 = new ObjectArrayList();
for (PrefabStackingAxis var12 : PrefabStackingAxis.values()) {
var18.add(new DropdownEntryInfo(LocalizableString.fromString(var12.name()), var12.name()));
}
var2.set("#MainPage #PasteAxis #Input.Entries", var18);
var2.set("#MainPage #PasteAxis #Input.Value", PrefabEditLoadCommand.DEFAULT_PREFAB_STACKING_AXIS.name());
ObjectArrayList var20 = new ObjectArrayList();
for (PrefabAlignment var13 : PrefabAlignment.values()) {
var20.add(new DropdownEntryInfo(LocalizableString.fromMessageId(var13.getLocalizationString()), var13.name()));
}
var2.set("#MainPage #AlignmentMethod #Input.Entries", var20);
var2.set("#MainPage #AlignmentMethod #Input.Value", PrefabEditLoadCommand.DEFAULT_PREFAB_ALIGNMENT.name());
ObjectArrayList var23 = new ObjectArrayList();
for (PrefabRowSplitMode var14 : PrefabRowSplitMode.values()) {
var23.add(new DropdownEntryInfo(LocalizableString.fromMessageId(var14.getLocalizationString()), var14.name()));
}
var2.set("#MainPage #RowSplitMode #Input.Entries", var23);
var2.set("#MainPage #RowSplitMode #Input.Value", PrefabEditLoadCommand.DEFAULT_ROW_SPLIT_MODE.name());
var2.set("#MainPage #DesiredYLevel #Input.Value", 55);
var2.set("#MainPage #BlocksBetweenPrefabs #Input.Value", 15);
var2.set("#MainPage #NumAirBeforeGround #Input.Value", 0);
var2.set("#MainPage #EnableWorldTicking #CheckBox.Value", false);
var2.set("#MainPage #Children.Visible", false);
var2.set("#MainPage #ErrorText.Visible", false);
var2.set("#LoadingPage.Visible", false);
var2.set("#LoadingPage #ProgressBar.Value", 0.0F);
var2.set("#LoadingPage #StatusText.TextSpans", Message.translation("server.commands.editprefab.loading.phase.initializing"));
var2.set("#LoadingPage #ErrorText.Visible", false);
var3.addEventBinding(
CustomUIEventBindingType.Activating,
"#MainPage #LoadButton",
new EventData()
.append("Action", PrefabEditorLoadSettingsPage.Action.Load.name())
.append("@PrefabPaths", "#MainPage #PrefabPaths #Input.Value")
.append("@Recursive", "#MainPage #Recursive #CheckBox.Value")
.append("@Children", "#MainPage #Children #CheckBox.Value")
.append("@Entities", "#MainPage #Entities #CheckBox.Value")
.append("@EnableWorldTicking", "#MainPage #EnableWorldTicking #CheckBox.Value")
.append("@DesiredYLevel", "#MainPage #DesiredYLevel #Input.Value")
.append("@BlocksBetweenPrefabs", "#MainPage #BlocksBetweenPrefabs #Input.Value")
.append("@WorldGenType", "#MainPage #WorldGenType #Input.Value")
.append("@Environment", "#MainPage #Environment #Input.Value")
.append("@GrassTint", "#MainPage #GrassTint #Input.Color")
.append("@PasteAxis", "#MainPage #PasteAxis #Input.Value")
.append("@NumAirBeforeGround", "#MainPage #NumAirBeforeGround #Input.Value")
.append("@AlignmentMethod", "#MainPage #AlignmentMethod #Input.Value")
.append("@RowSplitMode", "#MainPage #RowSplitMode #Input.Value")
);
var3.addEventBinding(
CustomUIEventBindingType.ValueChanged,
"#MainPage #SavedConfigs #Input",
new EventData()
.append("Action", PrefabEditorLoadSettingsPage.Action.ApplySavedProperties.name())
.append("@ConfigName", "#MainPage #SavedConfigs #Input.Value")
);
var3.addEventBinding(
CustomUIEventBindingType.Activating, "#MainPage #CancelButton", new EventData().append("Action", PrefabEditorLoadSettingsPage.Action.Cancel.name())
);
var3.addEventBinding(
CustomUIEventBindingType.Activating,
"#MainPage #SavePropertiesButton",
new EventData().append("Action", PrefabEditorLoadSettingsPage.Action.OpenSavePropertiesDialog.name())
);
var3.addEventBinding(
CustomUIEventBindingType.Activating,
"#SaveConfigPage #CancelButton",
new EventData().append("Action", PrefabEditorLoadSettingsPage.Action.CancelSavePropertiesDialog.name())
);
var3.addEventBinding(
CustomUIEventBindingType.ValueChanged,
"#SaveConfigPage #SaveName #Input",
new EventData()
.append("Action", PrefabEditorLoadSettingsPage.Action.SavePropertiesNameChanged.name())
.append("@ConfigName", "#SaveConfigPage #SaveName #Input.Value")
);
var3.addEventBinding(
CustomUIEventBindingType.Activating,
"#SaveConfigPage #SavePropertiesButton",
new EventData()
.append("Action", PrefabEditorLoadSettingsPage.Action.SavePropertiesConfig.name())
.append("@ConfigName", "#SaveConfigPage #SaveName #Input.Value")
.append("@PrefabPaths", "#MainPage #PrefabPaths #Input.Value")
.append("@Recursive", "#MainPage #Recursive #CheckBox.Value")
.append("@Children", "#MainPage #Children #CheckBox.Value")
.append("@Entities", "#MainPage #Entities #CheckBox.Value")
.append("@EnableWorldTicking", "#MainPage #EnableWorldTicking #CheckBox.Value")
.append("@DesiredYLevel", "#MainPage #DesiredYLevel #Input.Value")
.append("@BlocksBetweenPrefabs", "#MainPage #BlocksBetweenPrefabs #Input.Value")
.append("@WorldGenType", "#MainPage #WorldGenType #Input.Value")
.append("@Environment", "#MainPage #Environment #Input.Value")
.append("@GrassTint", "#MainPage #GrassTint #Input.Color")
.append("@PasteAxis", "#MainPage #PasteAxis #Input.Value")
.append("@NumAirBeforeGround", "#MainPage #NumAirBeforeGround #Input.Value")
.append("@AlignmentMethod", "#MainPage #AlignmentMethod #Input.Value")
.append("@RowSplitMode", "#MainPage #RowSplitMode #Input.Value")
);
var2.set("#PackBrowserPage.Visible", false);
var2.set("#CreatePackPage.Visible", false);
if (this.packBrowser.hasSelectedPack()) {
var2.set("#SaveConfigPage #SelectedPackLabel.Text", this.packBrowser.getSelectedPackDisplayName());
}
this.packBrowser.buildEventBindings(var3, "#SaveConfigPage #BrowsePackButton");
this.packBrowser.buildUI(var2, var3);
var3.addEventBinding(
CustomUIEventBindingType.Activating,
"#LoadingPage #CancelButton",
new EventData().append("Action", PrefabEditorLoadSettingsPage.Action.CancelLoading.name())
);
var3.addEventBinding(
CustomUIEventBindingType.Activating,
"#MainPage #PrefabPaths #BrowseButton",
new EventData().append("Action", PrefabEditorLoadSettingsPage.Action.OpenBrowser.name())
);
var3.addEventBinding(
CustomUIEventBindingType.Activating,
"#BrowserPage #BrowserContent #HomeButton",
new EventData().append("Action", PrefabEditorLoadSettingsPage.Action.BrowserHome.name())
);
var3.addEventBinding(
CustomUIEventBindingType.ValueChanged,
"#BrowserPage #BrowserContent #RootSelector",
new EventData()
.append("Action", PrefabEditorLoadSettingsPage.Action.BrowserRootChanged.name())
.append("@BrowserRoot", "#BrowserPage #BrowserContent #RootSelector.Value"),
false
);
var3.addEventBinding(
CustomUIEventBindingType.ValueChanged,
"#BrowserPage #BrowserContent #SearchInput",
new EventData()
.append("Action", PrefabEditorLoadSettingsPage.Action.BrowserSearch.name())
.append("@BrowserSearch", "#BrowserPage #BrowserContent #SearchInput.Value"),
false
);
var3.addEventBinding(
CustomUIEventBindingType.Activating,
"#BrowserPage #AddToListButton",
new EventData().append("Action", PrefabEditorLoadSettingsPage.Action.AddFolderToList.name())
);
var3.addEventBinding(
CustomUIEventBindingType.Activating,
"#BrowserPage #ConfirmButton",
new EventData().append("Action", PrefabEditorLoadSettingsPage.Action.ConfirmBrowser.name())
);
var3.addEventBinding(
CustomUIEventBindingType.Activating,
"#BrowserPage #CancelButton",
new EventData().append("Action", PrefabEditorLoadSettingsPage.Action.CancelBrowser.name())
);
var2.set("#BrowserPage.Visible", false);
var2.set("#BrowserPage #SelectedSection #SelectedItems.Value", "");
}
class="kw">public void handleDataEvent(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull PrefabEditorLoadSettingsPage.PageData var3) {
Player var4 = var2.getComponent(var1, Player.getComponentType());
assert var4 != null;
PlayerRef var5 = var2.getComponent(var1, PlayerRef.getComponentType());
assert var5 != null;
AssetPackSaveBrowser.ActionResult var6 = this.packBrowser
.handleAction(var3.uiAction != null ? var3.uiAction.name() : null, var3.packBrowserData, "#SaveConfigPage #SelectedPackLabel");
if (var6 != null) {
if (var6.errorKey() != null) {
this.playerRef.sendMessage(Message.translation(var6.errorKey()));
}
if (var6.packConfirmed() && this.packBrowser.hasSelectedPack()) {
BuilderToolsUserData.get(var4).setLastSavePack(this.packBrowser.getSelectedPack().getName());
}
this.sendUpdate(var6.commandBuilder(), var6.eventBuilder(), false);
} else {
class="kw">switch (var3.uiAction) {
case Load:
if (this.isLoading || this.isShuttingDown) {
class="kw">return;
}
this.isLoading = true;
this.loadingCancelled = false;
this.currentLoadingState = new PrefabLoadingState();
this.loadingWorldName = "prefabEditor-" + var5.getUsername();
UICommandBuilder var26 = new UICommandBuilder();
var26.set("#MainPage.Visible", false);
var26.set("#MainPage #ErrorText.Visible", false);
var26.set("#SaveConfigPage.Visible", false);
var26.set("#LoadingPage.Visible", true);
var26.set("#LoadingPage #ProgressBar.Value", 0.0F);
var26.set("#LoadingPage #StatusText.TextSpans", Message.translation("server.commands.editprefab.loading.phase.initializing"));
var26.set("#LoadingPage #ErrorText.Visible", false);
var26.set("#LoadingPage #CancelButton.Visible", true);
this.sendUpdate(var26);
var3.prefabRootDirectory = this.resolvedRootDirectory;
PrefabEditorCreationSettings var34 = var3.toCreationSettings();
CompletableFuture var39 = BuilderToolsPlugin.get()
.getPrefabEditSessionManager()
.loadPrefabAndCreateEditSession(var1, var4, var34, var2, this::onLoadingProgress);
if (var39 == null) {
Message var10 = var34.getFailureMessage();
this.showMainPageError(var10 != null ? var10 : Message.translation("server.commands.editprefab.error.failedToStart"));
class="kw">return;
}
var39.whenComplete((var4x, var5x) -> {
if (!this.loadingCancelled) {
if (var5x != null) {
this.onLoadingFailed(Message.raw(var5x.getMessage() != null ? var5x.getMessage() : "Unknown error"));
} else if (this.currentLoadingState != null && this.currentLoadingState.hasErrors()) {
this.onLoadingFailed(this.currentLoadingState.getStatusMessage());
} else {
this.isLoading = false;
this.loadingWorldName = null;
this.currentLoadingState = null;
var4.getPageManager().setPage(var1, var2, Page.ContentCreation);
}
}
});
break;
case OpenSavePropertiesDialog: {
UICommandBuilder var25 = new UICommandBuilder();
var25.set("#MainPage.Visible", false);
var25.set("#SaveConfigPage.Visible", true);
this.sendUpdate(var25);
break;
}
case CancelSavePropertiesDialog: {
UICommandBuilder var24 = new UICommandBuilder();
var24.set("#MainPage.Visible", true);
var24.set("#SaveConfigPage.Visible", false);
this.sendUpdate(var24);
break;
}
case SavePropertiesConfig:
AssetPack var23 = this.packBrowser.getSelectedPack();
if (var23 == null) {
this.playerRef.sendMessage(Message.translation("server.customUI.assetPackBrowser.packRequired"));
class="kw">return;
}
BuilderToolsUserData.get(var4).setLastSavePack(var23.getName());
var3.prefabRootDirectory = this.resolvedRootDirectory;
if (var3.configName == null || var3.configName.isBlank()) {
class="kw">return;
}
CompletableFuture var33 = PrefabEditorCreationSettings.save(var3.configName, var3.toCreationSettings(), var23, this.playerRef);
var33.thenRun(() -> {
UICommandBuilder builderx = new UICommandBuilder();
builderx.set("#MainPage.Visible", true);
builderx.set("#SaveConfigPage.Visible", false);
builderx.set("#SaveConfigPage #Buttons.Visible", true);
builderx.set("#SaveConfigPage #SaveName #Input.Value", "");
this.savedConfigsDropdown.add(new DropdownEntryInfo(LocalizableString.fromString(var3.configName), var3.configName));
builderx.set("#SavedConfigs #Input.Entries", this.savedConfigsDropdown);
builderx.set("#SavedConfigs #Input.Value", var3.configName);
this.sendUpdate(builderx);
});
var33.exceptionally(
var2x -> {
String var3 = var2x.getMessage();
if (var3 != null && var3.contains("server.commands.editprefab.error")) {
this.playerRef.sendMessage(Message.translation(var3));
} else {
((HytaleLogger.Api)((HytaleLogger.Api)LOGGER.atWarning()).withCause(var2x))
.log("Failed to save prefab editor config '%s'", var3.configName);
this.playerRef.sendMessage(Message.translation("server.commands.editprefab.error.failedToSave"));
}
this.sendUpdate(null, null, false);
class="kw">return null;
}
);
break;
case ApplySavedProperties:
if (var3.configName == null || var3.configName.isBlank()) {
this.resolvedRootDirectory = PrefabEditLoadCommand.DEFAULT_PREFAB_ROOT_DIRECTORY;
UICommandBuilder builderx = new UICommandBuilder();
builderx.set("#MainPage #PrefabPaths #Input.Value", "");
builderx.set("#MainPage #Recursive #CheckBox.Value", true);
builderx.set("#MainPage #Children #CheckBox.Value", false);
builderx.set("#MainPage #Entities #CheckBox.Value", false);
builderx.set("#MainPage #EnableWorldTicking #CheckBox.Value", false);
builderx.set("#MainPage #DesiredYLevel #Input.Value", 55);
builderx.set("#MainPage #BlocksBetweenPrefabs #Input.Value", 15);
builderx.set("#MainPage #WorldGenType #Input.Value", PrefabEditLoadCommand.DEFAULT_WORLD_GEN_TYPE.name());
builderx.set("#MainPage #Environment #Input.Value", "Env_Zone1_Plains");
builderx.set("#MainPage #GrassTint #Input.Color", "#5B9E28");
builderx.set("#MainPage #NumAirBeforeGround #Input.Value", 0);
builderx.set("#MainPage #PasteAxis #Input.Value", PrefabEditLoadCommand.DEFAULT_PREFAB_STACKING_AXIS.name());
builderx.set("#MainPage #AlignmentMethod #Input.Value", PrefabEditLoadCommand.DEFAULT_PREFAB_ALIGNMENT.name());
builderx.set("#MainPage #RowSplitMode #Input.Value", PrefabEditLoadCommand.DEFAULT_ROW_SPLIT_MODE.name());
this.sendUpdate(builderx);
class="kw">return;
}
PrefabEditorCreationSettings.load(var3.configName).thenAccept(var1x -> {
if (var1x != null) {
this.resolvedRootDirectory = var1x.getPrefabRootDirectory();
UICommandBuilder builderx = new UICommandBuilder();
builderx.set("#MainPage #PrefabPaths #Input.Value", String.join(",", var1x.getUnprocessedPrefabPaths()));
builderx.set("#MainPage #Recursive #CheckBox.Value", var1x.isRecursive());
builderx.set("#MainPage #Children #CheckBox.Value", var1x.isLoadChildren());
builderx.set("#MainPage #Entities #CheckBox.Value", var1x.shouldLoadEntities());
builderx.set("#MainPage #EnableWorldTicking #CheckBox.Value", var1x.isWorldTickingEnabled());
builderx.set("#MainPage #DesiredYLevel #Input.Value", var1x.getPasteYLevelGoal());
builderx.set("#MainPage #BlocksBetweenPrefabs #Input.Value", var1x.getBlocksBetweenEachPrefab());
builderx.set("#MainPage #WorldGenType #Input.Value", var1x.getWorldGenType().name());
builderx.set("#MainPage #Environment #Input.Value", var1x.getEnvironment());
builderx.set("#MainPage #GrassTint #Input.Color", var1x.getGrassTint());
builderx.set("#MainPage #NumAirBeforeGround #Input.Value", var1x.getBlocksAboveSurface());
builderx.set("#MainPage #PasteAxis #Input.Value", var1x.getStackingAxis().name());
builderx.set("#MainPage #AlignmentMethod #Input.Value", var1x.getAlignment().name());
builderx.set("#MainPage #RowSplitMode #Input.Value", var1x.getRowSplitMode().name());
this.sendUpdate(builderx);
}
});
break;
case Cancel:
var4.getPageManager().setPage(var1, var2, Page.None);
break;
case CancelLoading:
if (this.isShuttingDown) {
class="kw">return;
}
this.loadingCancelled = true;
this.isLoading = false;
this.isShuttingDown = true;
UICommandBuilder var21 = new UICommandBuilder();
var21.set("#LoadingPage #CancelButton.Disabled", true);
var21.set("#LoadingPage #StatusText.TextSpans", Message.translation("server.commands.editprefab.loading.phase.cancelling"));
var21.set("#LoadingPage #ProgressBar.Value", 0.1F);
var21.set("#LoadingPage #ErrorText.Visible", false);
this.sendUpdate(var21);
PrefabEditSessionManager var32 = BuilderToolsPlugin.get().getPrefabEditSessionManager();
if (this.loadingWorldName != null) {
String var37 = this.loadingWorldName;
this.loadingWorldName = null;
var32.cleanupCancelledSession(this.playerRef.getUuid(), var37, this::onShutdownProgress).whenComplete((var1x, var2x) -> {
this.isShuttingDown = false;
this.currentLoadingState = null;
UICommandBuilder builderx = new UICommandBuilder();
builderx.set("#LoadingPage.Visible", false);
builderx.set("#LoadingPage #CancelButton.Disabled", false);
builderx.set("#MainPage.Visible", true);
this.sendUpdate(builderx);
if (var2x != null) {
this.playerRef.sendMessage(Message.translation("server.commands.editprefab.error.shutdownFailed"));
}
});
} else {
this.isShuttingDown = false;
this.currentLoadingState = null;
UICommandBuilder builderx = new UICommandBuilder();
builderx.set("#LoadingPage.Visible", false);
builderx.set("#MainPage.Visible", true);
this.sendUpdate(builderx);
}
break;
case SavePropertiesNameChanged:
UICommandBuilder var20 = new UICommandBuilder();
var20.set("#SaveConfigPage #Buttons #SavePropertiesButton.Disabled", var3.configName.isBlank());
this.sendUpdate(var20);
break;
case OpenBrowser: {
this.inAssetsRoot = true;
List var19 = PrefabStore.get().getAllBrowsablePrefabPaths();
this.assetsCurrentDir = var19.size() == 1 ? Paths.get("HytaleAssets") : Paths.get("");
this.browserRoot = Paths.get("Assets");
this.browserCurrent = Paths.get("");
this.selectedPath = null;
this.browserSearchQuery = "";
this.selectedItems.clear();
UICommandBuilder var31 = new UICommandBuilder();
UIEventBuilder var36 = new UIEventBuilder();
var31.set("#MainPage.Visible", false);
var31.set("#BrowserPage.Visible", true);
var31.set("#BrowserPage #BrowserContent #RootSelector.Visible", false);
var31.set("#BrowserPage #BrowserContent #SearchInput.Value", "");
var31.set("#BrowserPage #SelectedSection #SelectedItems.Value", "");
this.buildBrowserList(var31, var36);
this.sendUpdate(var31, var36, false);
break;
}
case BrowserHome: {
if (this.inAssetsRoot) {
List var17 = PrefabStore.get().getAllBrowsablePrefabPaths();
this.assetsCurrentDir = var17.size() == 1 ? Paths.get("HytaleAssets") : Paths.get("");
} else {
this.browserCurrent = this.browserRoot.getFileSystem().getPath("");
}
this.selectedPath = null;
this.browserSearchQuery = "";
UICommandBuilder var18 = new UICommandBuilder();
UIEventBuilder var30 = new UIEventBuilder();
var18.set("#BrowserPage #BrowserContent #SearchInput.Value", "");
this.buildBrowserList(var18, var30);
this.sendUpdate(var18, var30, false);
break;
}
case BrowserNavigate:
if (var3.browserFile == null) {
class="kw">return;
}
String var16 = var3.browserFile;
if (this.inAssetsRoot) {
this.handleAssetsNavigation(var16);
} else {
this.handleRegularNavigation(var16);
}
break;
case BrowserRootChanged: {
if (var3.browserRootStr == null) {
class="kw">return;
}
if (!this.isAllowedBrowserRoot(var3.browserRootStr)) {
class="kw">return;
}
this.inAssetsRoot = "Assets".equals(var3.browserRootStr);
if (this.inAssetsRoot) {
List var14 = PrefabStore.get().getAllBrowsablePrefabPaths();
this.assetsCurrentDir = var14.size() == 1 ? Paths.get("HytaleAssets") : Paths.get("");
this.browserRoot = Paths.get("Assets");
this.browserCurrent = Paths.get("");
} else {
this.browserRoot = this.findActualRootPath(var3.browserRootStr);
if (this.browserRoot == null) {
this.browserRoot = Path.of(var3.browserRootStr);
}
this.browserCurrent = this.browserRoot.getFileSystem().getPath("");
}
this.selectedPath = null;
this.browserSearchQuery = "";
this.selectedItems.clear();
UICommandBuilder var15 = new UICommandBuilder();
UIEventBuilder var29 = new UIEventBuilder();
var15.set("#BrowserPage #BrowserContent #SearchInput.Value", "");
var15.set("#BrowserPage #SelectedSection #SelectedItems.Value", "");
PrefabRootDirectory var35 = this.getRootDirectoryForPath(var3.browserRootStr);
if (var35 != null) {
this.resolvedRootDirectory = var35;
}
this.buildBrowserList(var15, var29);
this.sendUpdate(var15, var29, false);
break;
}
case BrowserSearch: {
this.browserSearchQuery = var3.browserSearchStr != null ? var3.browserSearchStr.trim().toLowerCase(Locale.ROOT) : "";
UICommandBuilder var13 = new UICommandBuilder();
UIEventBuilder var28 = new UIEventBuilder();
this.buildBrowserList(var13, var28);
this.sendUpdate(var13, var28, false);
break;
}
case AddFolderToList: {
String var12 = this.getCurrentBrowserPath();
if (!var12.isEmpty() && !this.selectedItems.contains(var12)) {
this.selectedItems.add(var12);
}
UICommandBuilder var27 = new UICommandBuilder();
var27.set("#BrowserPage #SelectedSection #SelectedItems.Value", String.join("\n", this.selectedItems));
this.sendUpdate(var27);
break;
}
case ConfirmBrowser: {
this.clearBrowserPreview();
String var11;
if (!this.selectedItems.isEmpty()) {
var11 = String.join(",", this.selectedItems);
} else {
var11 = this.getCurrentBrowserPath();
}
UICommandBuilder var8 = new UICommandBuilder();
var8.set("#MainPage #PrefabPaths #Input.Value", var11);
PrefabRootDirectory var9 = this.inAssetsRoot ? PrefabRootDirectory.ASSET : this.getRootDirectoryForPath(this.browserRoot.toString());
if (var9 != null) {
this.resolvedRootDirectory = var9;
}
var8.set("#BrowserPage.Visible", false);
var8.set("#MainPage.Visible", true);
this.sendUpdate(var8);
break;
}
case CancelBrowser: {
this.clearBrowserPreview();
UICommandBuilder var7 = new UICommandBuilder();
var7.set("#BrowserPage.Visible", false);
var7.set("#MainPage.Visible", true);
this.sendUpdate(var7);
}
case OpenPackBrowser:
case ConfirmPackBrowser:
case CancelPackBrowser:
case OpenCreatePack:
case CreatePack:
case CancelCreatePack:
case PackSearch:
case PackSelect:
}
}
}
class="kw">private void onLoadingProgress(@Nonnull PrefabLoadingState var1) {
if (!this.loadingCancelled) {
this.currentLoadingState = var1;
UICommandBuilder var2 = new UICommandBuilder();
var2.set("#LoadingPage #ProgressBar.Value", var1.getProgressPercentage());
var2.set("#LoadingPage #StatusText.TextSpans", var1.getStatusMessage());
if (var1.hasErrors()) {
var2.set("#LoadingPage #ErrorText.Visible", true);
var2.set("#LoadingPage #ErrorText.TextSpans", var1.getErrors().getLast().toMessage());
var2.set("#LoadingPage #CancelButton.Visible", true);
}
this.sendUpdate(var2);
}
}
class="kw">private void showMainPageError(@Nonnull Message var1) {
this.isLoading = false;
this.loadingWorldName = null;
this.currentLoadingState = null;
UICommandBuilder var2 = new UICommandBuilder();
var2.set("#LoadingPage.Visible", false);
var2.set("#MainPage.Visible", true);
var2.set("#MainPage #ErrorText.Visible", true);
var2.set("#MainPage #ErrorText.TextSpans", var1);
this.sendUpdate(var2);
}
class="kw">private void onLoadingFailed(@Nonnull Message var1) {
this.isLoading = false;
UICommandBuilder var2 = new UICommandBuilder();
var2.set("#LoadingPage #ProgressBar.Value", 0.0F);
var2.set("#LoadingPage #StatusText.TextSpans", Message.translation("server.commands.editprefab.loading.phase.error"));
var2.set("#LoadingPage #ErrorText.Visible", true);
var2.set("#LoadingPage #ErrorText.TextSpans", var1);
var2.set("#LoadingPage #CancelButton.Visible", true);
this.sendUpdate(var2);
}
class="kw">private void onShutdownProgress(@Nonnull PrefabLoadingState var1) {
UICommandBuilder var2 = new UICommandBuilder();
var2.set("#LoadingPage #ProgressBar.Value", var1.getProgressPercentage());
var2.set("#LoadingPage #StatusText.TextSpans", var1.getStatusMessage());
this.sendUpdate(var2);
}
class="kw">private void handleAssetsNavigation(@Nonnull String var1) {
if ("..".equals(var1)) {
if (!this.assetsCurrentDir.toString().isEmpty()) {
Path var7 = this.assetsCurrentDir.getParent();
this.assetsCurrentDir = var7 != null ? var7 : Paths.get("");
this.selectedPath = null;
UICommandBuilder var8 = new UICommandBuilder();
UIEventBuilder var9 = new UIEventBuilder();
this.buildBrowserList(var8, var9);
this.sendUpdate(var8, var9, false);
}
} else {
String var2 = this.assetsCurrentDir.toString().replace('\\', '/');
String var3 = var2.isEmpty() ? var1 : var2 + "/" + var1;
Path var4 = this.assetProvider.resolveVirtualPath(var3);
if (var4 == null) {
this.sendUpdate();
} else {
if (Files.isDirectory(var4)) {
this.assetsCurrentDir = Paths.get(var3);
this.selectedPath = var3 + "/";
this.clearBrowserPreview();
UICommandBuilder var5 = new UICommandBuilder();
UIEventBuilder var6 = new UIEventBuilder();
this.buildBrowserList(var5, var6);
this.sendUpdate(var5, var6, false);
} else {
this.selectedPath = var3;
this.sendBrowserPreview(this.assetProvider.resolveVirtualPath(var3));
UICommandBuilder var10 = new UICommandBuilder();
var10.set("#BrowserPage #CurrentPath.Text", toNodeEditorPathOrVirtual(var3));
this.sendUpdate(var10);
}
}
}
}
class="kw">private void handleRegularNavigation(@Nonnull String var1) {
Path var2 = this.browserRoot.resolve(this.browserCurrent).resolve(var1);
if (!PathUtil.isChildOf(this.browserRoot, var2)) {
this.sendUpdate();
} else {
if (Files.isDirectory(var2)) {
this.browserCurrent = PathUtil.relativize(this.browserRoot, var2);
String var3 = this.browserCurrent.toString().replace('\\', '/');
this.selectedPath = var3.isEmpty() ? "/" : (var3.endsWith("/") ? var3 : var3 + "/");
this.clearBrowserPreview();
UICommandBuilder var4 = new UICommandBuilder();
UIEventBuilder var5 = new UIEventBuilder();
this.buildBrowserList(var4, var5);
this.sendUpdate(var4, var5, false);
} else {
this.selectedPath = PathUtil.relativize(this.browserRoot, var2).toString().replace('\\', '/');
this.sendBrowserPreview(var2);
UICommandBuilder var6 = new UICommandBuilder();
var6.set("#BrowserPage #CurrentPath.Text", this.selectedPath);
this.sendUpdate(var6);
}
}
}
@Nonnull
class="kw">private class="kw">static String toNodeEditorPathOrVirtual(@Nonnull String var0) {
String var1 = AssetPrefabFileProvider.toNodeEditorPath(var0);
class="kw">return var1 != null ? var1 : "assets/";
}
class="kw">private String getCurrentBrowserPath() {
if (this.selectedPath != null) {
class="kw">return this.selectedPath;
} else if (this.inAssetsRoot) {
String var2 = this.assetsCurrentDir.toString().replace('\\', '/');
class="kw">return var2.isEmpty() ? "/" : (var2.endsWith("/") ? var2 : var2 + "/");
} else {
String var1 = this.browserCurrent.toString().replace('\\', '/');
class="kw">return var1.isEmpty() ? "/" : (var1.endsWith("/") ? var1 : var1 + "/");
}
}
class="kw">private void sendBrowserPreview(@Nullable Path var1) {
if (var1 == null || !Files.isRegularFile(var1)) {
this.clearBrowserPreview();
} else if (!var1.equals(this.previewedBrowserPath)) {
this.previewedBrowserPath = var1;
try {
BlockSelection var2 = PrefabStore.get().getPrefab(var1);
this.sendBrowserPreviewPacket(var2);
} catch (PrefabLoadException var3) {
this.sendBrowserPreviewPacket(null);
}
}
}
class="kw">private void clearBrowserPreview() {
if (this.previewedBrowserPath != null) {
this.previewedBrowserPath = null;
this.sendBrowserPreviewPacket(null);
}
}
class="kw">private void sendBrowserPreviewPacket(@Nullable BlockSelection var1) {
BuilderToolPrefabPreview var2 = new BuilderToolPrefabPreview();
if (var1 != null) {
var2.tilt = 23;
var2.spinSpeed = 27;
var2.previewScale = 100;
if (var1.getBlockCount() > 4000000) {
var2.blocksOmitted = true;
var2.bounds = var1.toEditorSelectionBounds();
} else {
EditorBlocksChange var3 = var1.toPacket();
var2.blocksChange = var3.blocksChange;
var2.fluidsChange = var3.fluidsChange;
var2.entityChanges = var3.entityChanges;
}
this.applyTintFromPlayerPosition(var2);
}
this.playerRef.getPacketHandler().write(var2);
}
class="kw">private void applyTintFromPlayerPosition(@Nonnull BuilderToolPrefabPreview var1) {
Ref var2 = this.playerRef.getReference();
if (var2 == null) {
var1.biomeTint = DEFAULT_BIOME_TINT;
var1.waterTint = DEFAULT_WATER_TINT;
} else {
Store var3 = var2.getStore();
World var4 = var3.getExternalData().getWorld();
Vector3d var5 = this.playerRef.getTransform().getPosition();
int var6 = MathUtil.floor(var5.x);
int var7 = MathUtil.floor(var5.y);
int var8 = MathUtil.floor(var5.z);
long var9 = ChunkUtil.indexChunkFromBlock(var6, var8);
WorldChunk var11 = var4.getNonTickingChunk(var9);
if (var11 != null && var11.getBlockChunk() != null) {
BlockChunk var12 = var11.getBlockChunk();
var1.biomeTint = var12.getTint(var6, var8);
int var13 = var12.getEnvironment(var6, var7, var8);
Environment var14 = Environment.getAssetMap().getAsset(var13);
if (var14 != null) {
Color var15 = var14.getWaterTint();
if (var15 != null) {
var1.waterTint = (var15.red & 255) << 16 | (var15.green & 255) << 8 | var15.blue & 255;
class="kw">return;
}
}
var1.waterTint = DEFAULT_WATER_TINT;
} else {
var1.biomeTint = DEFAULT_BIOME_TINT;
var1.waterTint = DEFAULT_WATER_TINT;
}
}
}
class="kw">private void buildBrowserList(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2) {
var1.clear("#BrowserPage #BrowserContent #FileList");
if (this.inAssetsRoot) {
this.buildAssetsBrowserList(var1, var2);
} else {
this.buildRegularBrowserList(var1, var2);
}
}
class="kw">private void buildAssetsBrowserList(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2) {
String var3 = this.assetsCurrentDir.toString().replace('\\', '/');
String var4 = var3.isEmpty() ? "" : var3 + "/";
var1.set("#BrowserPage #CurrentPath.Text", var4.isEmpty() ? "Asset Packs" : toNodeEditorPathOrVirtual(var4));
List var5 = this.assetProvider.getFiles(this.assetsCurrentDir, this.browserSearchQuery);
int var6 = 0;
if (!var3.isEmpty() && this.browserSearchQuery.isEmpty()) {
var1.append("#BrowserPage #BrowserContent #FileList", "Pages/BasicTextButton.ui");
var1.set("#BrowserPage #BrowserContent #FileList[0].Text", "../");
var2.addEventBinding(
CustomUIEventBindingType.Activating,
"#BrowserPage #BrowserContent #FileList[0]",
new EventData().append("Action", PrefabEditorLoadSettingsPage.Action.BrowserNavigate.name()).append("File", "..")
);
var6++;
}
for (FileListProvider.FileEntry var8 : var5) {
String var9 = var8.isDirectory() ? var8.displayName() + "/" : var8.displayName();
String var10 = "#BrowserPage #BrowserContent #FileList[" + var6 + "]";
var1.append("#BrowserPage #BrowserContent #FileList", "Pages/BasicTextButton.ui");
var1.set(var10 + ".Text", var9);
if (!var8.isDirectory()) {
var1.set(var10 + ".Style", BUTTON_HIGHLIGHTED);
}
var2.addEventBinding(
CustomUIEventBindingType.Activating,
var10,
new EventData().append("Action", PrefabEditorLoadSettingsPage.Action.BrowserNavigate.name()).append("File", var8.name())
);
var6++;
}
}
class="kw">private void buildRegularBrowserList(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2) {
String var3 = this.getRootDisplayPath(this.browserRoot);
String var4 = this.browserCurrent.toString().replace('\\', '/');
String var5 = var4.isEmpty() ? var3 : var3 + "/" + var4;
var1.set("#BrowserPage #CurrentPath.Text", var5);
List var6 = new ObjectArrayList();
Path var7 = this.browserRoot.resolve(this.browserCurrent);
if (Files.isDirectory(var7)) {
try (DirectoryStream var8 = Files.newDirectoryStream(var7)) {
for (Path var10 : var8) {
String var11 = var10.getFileName().toString();
if (var11.charAt(0) == '/') {
var11 = var11.substring(1);
}
if ((PrefabStore.isPrefabFileName(var11) || Files.isDirectory(var10))
&& (this.browserSearchQuery.isEmpty() || var11.toLowerCase(Locale.ROOT).contains(this.browserSearchQuery))) {
var6.add(var10.toFile());
}
}
} catch (IOException var16) {
((HytaleLogger.Api)((HytaleLogger.Api)LOGGER.atSevere()).withCause(var16)).log("Error reading directory for browser");
}
}
var6.sort((var0, var1x) -> {
if (var0.isDirectory() == var1x.isDirectory()) {
class="kw">return var0.compareTo(var1x);
} else {
class="kw">return var0.isDirectory() ? -1 : 1;
}
});
int var17 = 0;
if (!this.browserCurrent.toString().isEmpty() && this.browserSearchQuery.isEmpty()) {
var1.append("#BrowserPage #BrowserContent #FileList", "Pages/BasicTextButton.ui");
var1.set("#BrowserPage #BrowserContent #FileList[0].Text", "../");
var2.addEventBinding(
CustomUIEventBindingType.Activating,
"#BrowserPage #BrowserContent #FileList[0]",
new EventData().append("Action", PrefabEditorLoadSettingsPage.Action.BrowserNavigate.name()).append("File", "..")
);
var17++;
}
for (File var19 : var6) {
boolean var20 = var19.isDirectory();
String var12 = var19.getName();
String var13 = "#BrowserPage #BrowserContent #FileList[" + var17 + "]";
var1.append("#BrowserPage #BrowserContent #FileList", "Pages/BasicTextButton.ui");
var1.set(var13 + ".Text", !var20 ? var12 : var12 + "/");
if (!var20) {
var1.set(var13 + ".Style", BUTTON_HIGHLIGHTED);
}
var2.addEventBinding(
CustomUIEventBindingType.Activating,
var13,
new EventData().append("Action", PrefabEditorLoadSettingsPage.Action.BrowserNavigate.name()).append("File", var12)
);
var17++;
}
}
@Nonnull
class="kw">private List<DropdownEntryInfo> buildBrowserRootEntries() {
List var1 = new ObjectArrayList();
var1.add(new DropdownEntryInfo(LocalizableString.fromString("Assets"), "Assets"));
class="kw">return var1;
}
@Nullable
class="kw">private Path findActualRootPath(@Nonnull String var1) {
for (PrefabStore.AssetPackPrefabPath var3 : PrefabStore.get().getAllBrowsablePrefabPaths()) {
if (var3.prefabsPath().toString().equals(var1)) {
class="kw">return var3.prefabsPath();
}
}
class="kw">return PrefabStore.get().getWorldGenPrefabsPath().toString().equals(var1) ? PrefabStore.get().getWorldGenPrefabsPath() : null;
}
@Nullable
class="kw">private AssetPack findAssetPackForPath(@Nonnull String var1) {
Path var2 = Path.of(var1).toAbsolutePath().normalize();
for (AssetPack var4 : AssetModule.get().getAssetPacks()) {
Path var5 = PrefabStore.get().getAssetPrefabsPathForPack(var4).toAbsolutePath().normalize();
if (var2.equals(var5) || var2.startsWith(var5)) {
class="kw">return var4;
}
}
class="kw">return null;
}
@Nullable
class="kw">private PrefabRootDirectory getRootDirectoryForPath(@Nonnull String var1) {
if ("Assets".equals(var1)) {
class="kw">return PrefabRootDirectory.ASSET;
} else if (var1.equals(PrefabStore.get().getServerPrefabsPath().toString())) {
class="kw">return PrefabRootDirectory.ASSET;
} else if (var1.equals(PrefabStore.get().getWorldGenPrefabsPath().toString())) {
class="kw">return PrefabRootDirectory.WORLDGEN;
} else {
class="kw">return this.findAssetPackForPath(var1) != null ? PrefabRootDirectory.ASSET : null;
}
}
class="kw">private boolean isAllowedBrowserRoot(@Nonnull String var1) {
class="kw">return SingleplayerModule.isOwner(this.playerRef) ? true : this.getRootDirectoryForPath(var1) != null;
}
@Nonnull
class="kw">private String getRootDisplayPath(@Nonnull Path var1) {
String var2 = var1.toString();
if (var2.equals(PrefabStore.get().getServerPrefabsPath().toString())) {
class="kw">return "ServerRoot/" + var1.getFileName();
} else if (var2.equals(PrefabStore.get().getWorldGenPrefabsPath().toString())) {
Path var6 = var1.getParent();
class="kw">return var6 != null && var6.getFileName() != null
? "WorldgenRoot/" + var6.getFileName() + "/" + var1.getFileName()
: "WorldgenRoot/" + var1.getFileName();
} else {
AssetPack var3 = this.findAssetPackForPath(var2);
if (var3 != null) {
String var4 = var3.equals(AssetModule.get().getBaseAssetPack()) ? "HytaleAssets" : "[" + var3.getName() + "]";
Path var5 = var1.getParent();
class="kw">return var5 != null && var5.getFileName() != null ? var4 + "/" + var5.getFileName() + "/" + var1.getFileName() : var4 + "/" + var1.getFileName();
} else {
class="kw">return var1.toString();
}
}
}
class="kw">public enum Action {
Load,
OpenSavePropertiesDialog,
CancelSavePropertiesDialog,
SavePropertiesConfig,
ApplySavedProperties,
Cancel,
CancelLoading,
SavePropertiesNameChanged,
OpenBrowser,
BrowserHome,
BrowserNavigate,
BrowserRootChanged,
BrowserSearch,
AddFolderToList,
ConfirmBrowser,
CancelBrowser,
OpenPackBrowser,
ConfirmPackBrowser,
CancelPackBrowser,
OpenCreatePack,
CreatePack,
CancelCreatePack,
PackSearch,
PackSelect;
Action() {
}
}
class="kw">protected class="kw">static class PageData {
class="kw">public class="kw">static class="kw">final String CONFIG_NAME = "@ConfigName";
class="kw">public class="kw">static class="kw">final String ROOT_DIR = "@RootDir";
class="kw">public class="kw">static class="kw">final String PREFAB_PATHS = "@PrefabPaths";
class="kw">public class="kw">static class="kw">final String RECURSIVE = "@Recursive";
class="kw">public class="kw">static class="kw">final String CHILDREN = "@Children";
class="kw">public class="kw">static class="kw">final String ENTITIES = "@Entities";
class="kw">public class="kw">static class="kw">final String ENABLE_WORLD_TICKING = "@EnableWorldTicking";
class="kw">public class="kw">static class="kw">final String DESIRED_Y_LEVEL = "@DesiredYLevel";
class="kw">public class="kw">static class="kw">final String BLOCKS_BETWEEN_PREFABS = "@BlocksBetweenPrefabs";
class="kw">public class="kw">static class="kw">final String WORLD_GEN_TYPE = "@WorldGenType";
class="kw">public class="kw">static class="kw">final String ENVIRONMENT = "@Environment";
class="kw">public class="kw">static class="kw">final String GRASS_TINT = "@GrassTint";
class="kw">public class="kw">static class="kw">final String NUM_AIR_BEFORE_GROUND = "@NumAirBeforeGround";
class="kw">public class="kw">static class="kw">final String PASTE_AXIS = "@PasteAxis";
class="kw">public class="kw">static class="kw">final String ALIGNMENT_METHOD = "@AlignmentMethod";
class="kw">public class="kw">static class="kw">final String ROW_SPLIT_MODE = "@RowSplitMode";
class="kw">public class="kw">static class="kw">final String BROWSER_FILE = "File";
class="kw">public class="kw">static class="kw">final String BROWSER_ROOT = "@BrowserRoot";
class="kw">public class="kw">static class="kw">final String BROWSER_SEARCH = "@BrowserSearch";
class="kw">public class="kw">static class="kw">final BuilderCodec<PrefabEditorLoadSettingsPage.PageData> CODEC = BuilderCodec.builder(
PrefabEditorLoadSettingsPage.PageData.class, PrefabEditorLoadSettingsPage.PageData::new
)
.append(
new KeyedCodec<>("Action", new EnumCodec<>(PrefabEditorLoadSettingsPage.Action.class, EnumCodec.EnumStyle.LEGACY)),
(var0, var1) -> var0.uiAction = var1,
var0 -> var0.uiAction
)
.add()
.append(new KeyedCodec<>("@ConfigName", Codec.STRING), (var0, var1) -> var0.configName = var1, var0 -> var0.configName)
.add()
.append(
new KeyedCodec<>("@RootDir", new EnumCodec<>(PrefabRootDirectory.class, EnumCodec.EnumStyle.LEGACY)),
(var0, var1) -> var0.prefabRootDirectory = var1,
var0 -> var0.prefabRootDirectory
)
.add()
.append(new KeyedCodec<>("@PrefabPaths", Codec.STRING), (var0, var1) -> var0.unprocessedPrefabPaths = var1, var0 -> var0.unprocessedPrefabPaths)
.add()
.append(new KeyedCodec<>("@DesiredYLevel", Codec.INTEGER), (var0, var1) -> var0.pasteYLevelGoal = var1, var0 -> var0.pasteYLevelGoal)
.add()
.append(
new KeyedCodec<>("@BlocksBetweenPrefabs", Codec.INTEGER), (var0, var1) -> var0.blocksBetweenEachPrefab = var1, var0 -> var0.blocksBetweenEachPrefab
)
.add()
.append(
new KeyedCodec<>("@WorldGenType", new EnumCodec<>(WorldGenType.class, EnumCodec.EnumStyle.LEGACY)),
(var0, var1) -> var0.worldGenType = var1,
var0 -> var0.worldGenType
)
.add()
.append(new KeyedCodec<>("@Environment", Codec.STRING), (var0, var1) -> var0.environment = var1, var0 -> var0.environment)
.add()
.append(new KeyedCodec<>("@GrassTint", Codec.STRING), (var0, var1) -> var0.grassTint = var1, var0 -> var0.grassTint)
.add()
.append(new KeyedCodec<>("@NumAirBeforeGround", Codec.INTEGER), (var0, var1) -> var0.blocksAboveSurface = var1, var0 -> var0.blocksAboveSurface)
.add()
.append(
new KeyedCodec<>("@PasteAxis", new EnumCodec<>(PrefabStackingAxis.class, EnumCodec.EnumStyle.LEGACY)),
(var0, var1) -> var0.stackingAxis = var1,
var0 -> var0.stackingAxis
)
.add()
.append(
new KeyedCodec<>("@AlignmentMethod", new EnumCodec<>(PrefabAlignment.class, EnumCodec.EnumStyle.LEGACY)),
(var0, var1) -> var0.alignment = var1,
var0 -> var0.alignment
)
.add()
.append(
new KeyedCodec<>("@RowSplitMode", new EnumCodec<>(PrefabRowSplitMode.class, EnumCodec.EnumStyle.LEGACY)),
(var0, var1) -> var0.rowSplitMode = var1,
var0 -> var0.rowSplitMode
)
.add()
.append(new KeyedCodec<>("@Recursive", Codec.BOOLEAN), (var0, var1) -> var0.recursive = var1, var0 -> var0.recursive)
.add()
.append(new KeyedCodec<>("@Children", Codec.BOOLEAN), (var0, var1) -> var0.loadChildren = var1, var0 -> var0.loadChildren)
.add()
.append(new KeyedCodec<>("@Entities", Codec.BOOLEAN), (var0, var1) -> var0.loadEntities = var1, var0 -> var0.loadEntities)
.add()
.append(new KeyedCodec<>("@EnableWorldTicking", Codec.BOOLEAN), (var0, var1) -> var0.enableWorldTicking = var1, var0 -> var0.enableWorldTicking)
.add()
.append(new KeyedCodec<>("File", Codec.STRING), (var0, var1) -> var0.browserFile = var1, var0 -> var0.browserFile)
.add()
.append(new KeyedCodec<>("@BrowserRoot", Codec.STRING), (var0, var1) -> var0.browserRootStr = var1, var0 -> var0.browserRootStr)
.add()
.append(new KeyedCodec<>("@BrowserSearch", Codec.STRING), (var0, var1) -> var0.browserSearchStr = var1, var0 -> var0.browserSearchStr)
.add()
.append(new KeyedCodec<>("Pack", Codec.STRING), (var0, var1) -> var0.packBrowserData.pack = var1, var0 -> var0.packBrowserData.pack)
.add()
.append(new KeyedCodec<>("@PackSearch", Codec.STRING), (var0, var1) -> var0.packBrowserData.search = var1, var0 -> var0.packBrowserData.search)
.add()
.append(new KeyedCodec<>("@CreateName", Codec.STRING), (var0, var1) -> var0.packBrowserData.createName = var1, var0 -> var0.packBrowserData.createName)
.add()
.append(
new KeyedCodec<>("@CreateGroup", Codec.STRING), (var0, var1) -> var0.packBrowserData.createGroup = var1, var0 -> var0.packBrowserData.createGroup
)
.add()
.append(
new KeyedCodec<>("@CreateDescription", Codec.STRING),
(var0, var1) -> var0.packBrowserData.createDescription = var1,
var0 -> var0.packBrowserData.createDescription
)
.add()
.append(
new KeyedCodec<>("@CreateVersion", Codec.STRING),
(var0, var1) -> var0.packBrowserData.createVersion = var1,
var0 -> var0.packBrowserData.createVersion
)
.add()
.append(
new KeyedCodec<>("@CreateWebsite", Codec.STRING),
(var0, var1) -> var0.packBrowserData.createWebsite = var1,
var0 -> var0.packBrowserData.createWebsite
)
.add()
.append(
new KeyedCodec<>("@CreateAuthorName", Codec.STRING),
(var0, var1) -> var0.packBrowserData.createAuthorName = var1,
var0 -> var0.packBrowserData.createAuthorName
)
.add()
.append(
new KeyedCodec<>("ValidateCreate", Codec.STRING),
(var0, var1) -> var0.packBrowserData.validateCreate = var1,
var0 -> var0.packBrowserData.validateCreate
)
.add()
.build();
class="kw">public String configName;
class="kw">public PrefabEditorLoadSettingsPage.Action uiAction;
class="kw">public PrefabRootDirectory prefabRootDirectory = PrefabRootDirectory.ASSET;
class="kw">public String unprocessedPrefabPaths = "";
class="kw">public int pasteYLevelGoal = 55;
class="kw">public int blocksBetweenEachPrefab = 15;
class="kw">public WorldGenType worldGenType = PrefabEditLoadCommand.DEFAULT_WORLD_GEN_TYPE;
class="kw">public String environment = "Env_Zone1_Plains";
class="kw">public String grassTint = "#5B9E28";
class="kw">public int blocksAboveSurface = 0;
class="kw">public PrefabStackingAxis stackingAxis = PrefabEditLoadCommand.DEFAULT_PREFAB_STACKING_AXIS;
class="kw">public PrefabAlignment alignment = PrefabEditLoadCommand.DEFAULT_PREFAB_ALIGNMENT;
class="kw">public PrefabRowSplitMode rowSplitMode = PrefabEditLoadCommand.DEFAULT_ROW_SPLIT_MODE;
class="kw">public boolean recursive;
class="kw">public boolean loadChildren;
class="kw">public boolean loadEntities;
class="kw">public boolean enableWorldTicking = false;
class="kw">public String browserFile;
class="kw">public String browserRootStr;
class="kw">public String browserSearchStr;
class="kw">public class="kw">final AssetPackSaveBrowserEventData packBrowserData = new AssetPackSaveBrowserEventData();
class="kw">public PageData() {
}
@Nonnull
class="kw">public PrefabEditorCreationSettings toCreationSettings() {
String var1 = this.grassTint;
if (var1 != null && var1.length() > 7) {
var1 = var1.substring(0, 7);
}
class="kw">return new PrefabEditorCreationSettings(
this.prefabRootDirectory,
List.of(this.unprocessedPrefabPaths.split(",", 0)),
this.pasteYLevelGoal,
this.blocksBetweenEachPrefab,
this.worldGenType,
this.blocksAboveSurface,
this.stackingAxis,
this.alignment,
this.recursive,
this.loadChildren,
this.loadEntities,
this.enableWorldTicking,
this.rowSplitMode,
this.environment,
var1
);
}
}
}