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() {
      }
   }
}