PageData class
Пакет: com.hypixel.hytale.builtin.buildertools.prefabeditor.ui
Файл: com/hypixel/hytale/builtin/buildertools/prefabeditor/ui/PrefabEditorExitConfirmPage.java
Поля (2)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public static final BuilderCodec<PrefabEditorExitConfirmPage.PageData> |
CODEC |
|
public PrefabEditorExitConfirmPage.Action |
action |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.buildertools.prefabeditor.ui;
class="kw">import com.hypixel.hytale.builtin.buildertools.BuilderToolsPlugin;
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.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.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
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_.Page;
class="kw">import com.hypixel.hytale.server.core.Message;
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.prefab.PrefabStore;
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.storage.EntityStore;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">public class PrefabEditorExitConfirmPage class="kw">extends InteractiveCustomUIPage<PrefabEditorExitConfirmPage.PageData> {
@Nonnull
class="kw">private class="kw">final PrefabEditSession prefabEditSession;
@Nonnull
class="kw">private class="kw">final World world;
@Nonnull
class="kw">private class="kw">final List<PrefabEditingMetadata> dirtyPrefabs;
class="kw">public PrefabEditorExitConfirmPage(@Nonnull PlayerRef var1, @Nonnull PrefabEditSession var2, @Nonnull World var3, @Nonnull List<PrefabEditingMetadata> var4) {
super(var1, CustomPageLifetime.CanDismissOrCloseThroughInteraction, PrefabEditorExitConfirmPage.PageData.CODEC);
this.prefabEditSession = var2;
this.world = var3;
this.dirtyPrefabs = var4;
}
@Override
class="kw">public void build(@Nonnull Ref<EntityStore> var1, @Nonnull UICommandBuilder var2, @Nonnull UIEventBuilder var3, @Nonnull Store<EntityStore> var4) {
var2.append("Pages/PrefabEditorExitConfirm.ui");
var2.set("#WarningTitle.TextSpans", Message.translation("server.commands.editprefab.exit.unsavedWarning.title"));
var2.set(
"#WarningMessage.TextSpans", Message.translation("server.commands.editprefab.exit.unsavedWarning.message").param("count", this.dirtyPrefabs.size())
);
int var5 = 0;
for (PrefabEditingMetadata var7 : this.dirtyPrefabs) {
String var8 = var7.getPrefabPath().toString().replace('\\', '/');
String var9 = PrefabStore.stripPrefabSuffix(var7.getPrefabPath().getFileName().toString());
var2.append("#PrefabList", "Pages/BasicTextButton.ui");
var2.set("#PrefabList[" + var5 + "].Text", "\u2022 " + var9);
var2.set("#PrefabList[" + var5 + "].TooltipText", var8);
var5++;
}
var3.addEventBinding(
CustomUIEventBindingType.Activating, "#ConfirmExitButton", new EventData().append("Action", PrefabEditorExitConfirmPage.Action.ConfirmExit.name())
);
var3.addEventBinding(
CustomUIEventBindingType.Activating, "#CancelButton", new EventData().append("Action", PrefabEditorExitConfirmPage.Action.Cancel.name())
);
var3.addEventBinding(
CustomUIEventBindingType.Activating, "#SaveAndExitButton", new EventData().append("Action", PrefabEditorExitConfirmPage.Action.SaveAndExit.name())
);
}
class="kw">public void handleDataEvent(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull PrefabEditorExitConfirmPage.PageData var3) {
Player var4 = var2.getComponent(var1, Player.getComponentType());
assert var4 != null;
PrefabEditSessionManager var5 = BuilderToolsPlugin.get().getPrefabEditSessionManager();
class="kw">switch (var3.action) {
case ConfirmExit:
var4.getPageManager().setPage(var1, var2, Page.None);
var5.exitEditSession(var1, this.world, this.playerRef, var2);
break;
case Cancel:
if (!var5.isInEditWorld(this.playerRef, var2)) {
var5.sendToEditWorld(var1, this.world, this.playerRef);
}
var4.getPageManager().setPage(var1, var2, Page.None);
break;
case SaveAndExit:
var4.getPageManager().openCustomPage(var1, var2, new PrefabEditorSaveSettingsPage(this.playerRef, this.prefabEditSession, true));
}
}
class="kw">public enum Action {
ConfirmExit,
Cancel,
SaveAndExit;
Action() {
}
}
class="kw">protected class="kw">static class PageData {
class="kw">public class="kw">static class="kw">final BuilderCodec<PrefabEditorExitConfirmPage.PageData> CODEC = BuilderCodec.builder(
PrefabEditorExitConfirmPage.PageData.class, PrefabEditorExitConfirmPage.PageData::new
)
.append(
new KeyedCodec<>("Action", new EnumCodec<>(PrefabEditorExitConfirmPage.Action.class, EnumCodec.EnumStyle.LEGACY)),
(var0, var1) -> var0.action = var1,
var0 -> var0.action
)
.add()
.build();
class="kw">public PrefabEditorExitConfirmPage.Action action;
class="kw">public PageData() {
}
}
}