PageEventData class

Пакет: com.hypixel.hytale.builtin.adventure.teleporter.page

Файл: com/hypixel/hytale/builtin/adventure/teleporter/page/TeleporterSettingsPage.java

Поля (33)

МодификаторыТипИмя
public static final BuilderCodec<TeleporterSettingsPage.PageEventData> CODEC
public static final String KEY_BLOCK_RELATIVE
public static final String KEY_NEW_WARP
public static final String KEY_PITCH
public static final String KEY_PITCH_IS_RELATIVE
public static final String KEY_ROLL
public static final String KEY_ROLL_IS_RELATIVE
public static final String KEY_WARP
public static final String KEY_WORLD
public static final String KEY_X
public static final String KEY_X_IS_RELATIVE
public static final String KEY_Y
public static final String KEY_YAW
public static final String KEY_YAW_IS_RELATIVE
public static final String KEY_Y_IS_RELATIVE
public static final String KEY_Z
public static final String KEY_Z_IS_RELATIVE
public String destinationWarp
public boolean isBlockRelative
public float pitch
public boolean pitchIsRelative
public float roll
public boolean rollIsRelative
public String warpName
public String world
public double x
public boolean xIsRelative
public double y
public boolean yIsRelative
public float yaw
public boolean yawIsRelative
public double z
public boolean zIsRelative

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.teleporter.page;

class="kw">import com.hypixel.hytale.builtin.adventure.teleporter.component.Teleporter;
class="kw">import com.hypixel.hytale.builtin.adventure.teleporter.system.CreateWarpWhenTeleporterPlacedSystem;
class="kw">import com.hypixel.hytale.builtin.adventure.teleporter.system.TurnOffTeleportersSystem;
class="kw">import com.hypixel.hytale.builtin.adventure.teleporter.util.CannedWarpNames;
class="kw">import com.hypixel.hytale.builtin.teleport.TeleportPlugin;
class="kw">import com.hypixel.hytale.builtin.teleport.Warp;
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.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.vector.Transform;
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.modules.block.BlockModule;
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.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.Universe;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectListIterator;
class="kw">import java.util.List;
class="kw">import java.util.Locale;
class="kw">import java.util.Objects;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.checkerframework.checker.nullness.compatqual.NullableDecl;

class="kw">public class TeleporterSettingsPage class="kw">extends InteractiveCustomUIPage<TeleporterSettingsPage.PageEventData> {
   @Nonnull
   class="kw">private class="kw">final Ref<ChunkStore> blockRef;
   class="kw">private class="kw">final TeleporterSettingsPage.Mode mode;

   class="kw">public TeleporterSettingsPage(@Nonnull PlayerRef var1, @Nonnull Ref<ChunkStore> var2, TeleporterSettingsPage.Mode var3) {
      super(var1, CustomPageLifetime.CanDismissOrCloseThroughInteraction, TeleporterSettingsPage.PageEventData.CODEC);
      this.blockRef = var2;
      this.mode = var3;
   }

   @Override
   class="kw">public void build(@Nonnull Ref<EntityStore> var1, @Nonnull UICommandBuilder var2, @Nonnull UIEventBuilder var3, @Nonnull Store<EntityStore> var4) {
      String var5 = this.playerRef.getLanguage();
      Teleporter var6 = this.blockRef.getStore().getComponent(this.blockRef, Teleporter.getComponentType());
      var2.append("Pages/Teleporter.ui");
      if (var6 == null) {
         var2.set("#ErrorScreen.Visible", true);
         var2.set("#FullSettings.Visible", false);
         var2.set("#WarpSettings.Visible", false);
         var2.set("#Buttons.Visible", false);
      } else {
         var2.set("#ErrorScreen.Visible", false);
         var2.set("#FullSettings.Visible", this.mode == TeleporterSettingsPage.Mode.FULL);
         class="kw">switch (this.mode) {
            case FULL:
               byte var12 = var6.getRelativeMask();
               var2.set("#BlockRelative #CheckBox.Value", (var12 & 64) != 0);
               Transform var14 = var6.getTransform();
               if (var14 != null) {
                  var2.set("#X #Input.Value", var14.getPosition().x());
                  var2.set("#Y #Input.Value", var14.getPosition().y());
                  var2.set("#Z #Input.Value", var14.getPosition().z());
               }

               var2.set("#X #CheckBox.Value", (var12 & 1) != 0);
               var2.set("#Y #CheckBox.Value", (var12 & 2) != 0);
               var2.set("#Z #CheckBox.Value", (var12 & 4) != 0);
               if (var14 != null) {
                  var2.set("#Yaw #Input.Value", var14.getRotation().yaw());
                  var2.set("#Pitch #Input.Value", var14.getRotation().pitch());
                  var2.set("#Roll #Input.Value", var14.getRotation().roll());
               }

               var2.set("#Yaw #CheckBox.Value", (var12 & 8) != 0);
               var2.set("#Pitch #CheckBox.Value", (var12 & 16) != 0);
               var2.set("#Roll #CheckBox.Value", (var12 & 32) != 0);
               ObjectArrayList var9 = new ObjectArrayList();
               var9.add(new DropdownEntryInfo(LocalizableString.fromMessageId("server.customUI.teleporter.noWorld"), ""));

               for (World var11 : Universe.get().getWorlds().values()) {
                  var9.add(new DropdownEntryInfo(LocalizableString.fromString(var11.getName()), var11.getWorldConfig().getUuid().toString()));
               }

               var2.set("#WorldDropdown.Entries", var9);
               UUID var15 = var6.getWorldUuid();
               var2.set("#WorldDropdown.Value", var15 != null ? var15.toString() : "");
               var2.set("#WarpDropdown.Entries", getWarpsSortedById(var6.getOwnedWarp(), null));
               var2.set("#WarpDropdown.Value", var6.getWarp() != null ? var6.getWarp() : "");
               var2.set("#NewWarp.Value", var6.getOwnedWarp() != null ? var6.getOwnedWarp() : "");
               var3.addEventBinding(
                  CustomUIEventBindingType.Activating,
                  "#SaveButton",
                  new EventData()
                     .append("@BlockRelative", "#BlockRelative #CheckBox.Value")
                     .append("@X", "#X #Input.Value")
                     .append("@Y", "#Y #Input.Value")
                     .append("@Z", "#Z #Input.Value")
                     .append("@XIsRelative", "#X #CheckBox.Value")
                     .append("@YIsRelative", "#Y #CheckBox.Value")
                     .append("@ZIsRelative", "#Z #CheckBox.Value")
                     .append("@Yaw", "#Yaw #Input.Value")
                     .append("@Pitch", "#Pitch #Input.Value")
                     .append("@Roll", "#Roll #Input.Value")
                     .append("@YawIsRelative", "#Yaw #CheckBox.Value")
                     .append("@PitchIsRelative", "#Pitch #CheckBox.Value")
                     .append("@RollIsRelative", "#Roll #CheckBox.Value")
                     .append("@World", "#WorldDropdown.Value")
                     .append("@Warp", "#WarpDropdown.Value")
                     .append("@NewWarp", "#NewWarp.Value")
               );
               break;
            case WARP:
               var2.set("#WarpDropdown.Entries", getWarpsSortedById(var6.getOwnedWarp(), var4.getExternalData().getWorld().getName()));
               var2.set("#WarpDropdown.Value", var6.getWarp() != null ? var6.getWarp() : "");
               Message var7;
               if (var6.hasOwnedWarp() && !var6.isCustomName()) {
                  var7 = Message.translation(var6.getOwnedWarp());
               } else {
                  String var8 = CannedWarpNames.generateCannedWarpNameKey(this.blockRef, var5);
                  var7 = var8 == null ? Message.translation("server.customUI.teleporter.warpName") : Message.translation(var8);
               }

               var2.set("#NewWarp.PlaceholderText", var7);
               String var13 = var6.isCustomName() && var6.getOwnedWarp() != null ? var6.getOwnedWarp() : "";
               var2.set("#NewWarp.Value", var13);
               var3.addEventBinding(
                  CustomUIEventBindingType.Activating,
                  "#SaveButton",
                  new EventData().append("@Warp", "#WarpDropdown.Value").append("@NewWarp", "#NewWarp.Value")
               );
         }
      }
   }

   class="kw">static List<DropdownEntryInfo> getWarpsSortedById(@NullableDecl String var0, @NullableDecl String var1) {
      List var2 = new ObjectArrayList();
      var2.add(new DropdownEntryInfo(LocalizableString.fromMessageId("server.customUI.teleporter.noWarp"), ""));
      ObjectArrayList var3 = new ObjectArrayList(TeleportPlugin.get().getWarps().values());
      var3.sort((var0x, var1x) -> var0x.getId().compareToIgnoreCase(var1x.getId()));
      ObjectListIterator var4 = var3.iterator();

      while (var4.hasNext()) {
         Warp var5 = (Warp)var4.next();
         if ((var1 == null || var5.getWorld().equals(var1)) && !var5.getId().equalsIgnoreCase(var0)) {
            var2.add(new DropdownEntryInfo(LocalizableString.fromString(var5.getId()), var5.getId().toLowerCase(Locale.ROOT)));
         }
      }

      class="kw">return var2;
   }

   class="kw">public void handleDataEvent(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull TeleporterSettingsPage.PageEventData var3) {
      Player var4 = var2.getComponent(var1, Player.getComponentType());
      if (var4 != null) {
         String var5 = this.playerRef.getLanguage();
         BlockModule.BlockStateInfo var6 = this.blockRef.getStore().getComponent(this.blockRef, BlockModule.BlockStateInfo.getComponentType());
         if (var6 == null) {
            var4.getPageManager().setPage(var1, var2, Page.None);
         } else {
            Ref var7 = var6.getSectionRef();
            if (!var7.isValid()) {
               var4.getPageManager().setPage(var1, var2, Page.None);
            } else {
               Teleporter var8 = this.blockRef.getStore().getComponent(this.blockRef, Teleporter.getComponentType());
               if (var8 == null) {
                  var4.getPageManager().setPage(var1, var2, Page.None);
               } else {
                  String var9 = var8.getOwnedWarp();
                  boolean var10 = true;
                  if (var3.warpName == null || var3.warpName.isEmpty()) {
                     if (var9 == null) {
                        var3.warpName = CannedWarpNames.generateCannedWarpName(this.blockRef, var5);
                        var10 = false;
                     } else {
                        var3.warpName = var9;
                        var10 = var8.isCustomName();
                     }

                     if (var3.warpName == null) {
                        UICommandBuilder var17 = new UICommandBuilder();
                        var17.set("#NewWarp.PlaceholderText", Message.translation("server.customUI.teleporter.warpNameRightHereHint"));
                        var17.set("#ErrorLabel.Text", Message.translation("server.customUI.teleporter.errorMissingWarpName"));
                        var17.set("#ErrorLabel.Visible", true);
                        this.sendUpdate(var17);
                        class="kw">return;
                     }
                  }

                  if (!var3.warpName.equalsIgnoreCase(var9)) {
                     boolean var11 = TeleportPlugin.get().getWarps().containsKey(var3.warpName.toLowerCase(Locale.ROOT));
                     if (var11) {
                        UICommandBuilder var18 = new UICommandBuilder();
                        var18.set("#ErrorLabel.Text", Message.translation("server.customUI.teleporter.errorWarpAlreadyExists"));
                        var18.set("#ErrorLabel.Visible", true);
                        this.sendUpdate(var18);
                        class="kw">return;
                     }
                  }

                  if (var9 != null && !var9.isEmpty()) {
                     TeleportPlugin.get().removeWarp(var9);
                  }

                  var4.getPageManager().setPage(var1, var2, Page.None);
                  String var16 = var8.getOwnedWarp();
                  String var12 = var8.getWarp();
                  CreateWarpWhenTeleporterPlacedSystem.createWarp(var7.getStore(), var7, var6, var3.warpName);
                  var8.setOwnedWarp(var3.warpName);
                  var8.setIsCustomName(var10);
                  class="kw">switch (this.mode) {
                     case FULL:
                        var8.setWorldUuid(var3.world != null && !var3.world.isEmpty() ? UUID.fromString(var3.world) : null);
                        Transform var13 = new Transform();
                        var13.getPosition().x = var3.x;
                        var13.getPosition().y = var3.y;
                        var13.getPosition().z = var3.z;
                        var13.getRotation().setYaw(var3.yaw);
                        var13.getRotation().setPitch(var3.pitch);
                        var13.getRotation().setRoll(var3.roll);
                        var8.setTransform(var13);
                        var8.setRelativeMask(
                           (byte)(
                              (var3.xIsRelative ? 1 : 0)
                                 | (var3.yIsRelative ? 2 : 0)
                                 | (var3.zIsRelative ? 4 : 0)
                                 | (var3.yawIsRelative ? 8 : 0)
                                 | (var3.pitchIsRelative ? 16 : 0)
                                 | (var3.rollIsRelative ? 32 : 0)
                                 | (var3.isBlockRelative ? 64 : 0)
                           )
                        );
                        var8.setWarp(var3.destinationWarp != null && !var3.destinationWarp.isEmpty() ? var3.destinationWarp : null);
                        break;
                     case WARP:
                        var8.setWorldUuid(null);
                        var8.setTransform(null);
                        var8.setWarp(var3.destinationWarp != null && !var3.destinationWarp.isEmpty() ? var3.destinationWarp : null);
                  }

                  var6.markNeedsSaving();
                  boolean var19 = !Objects.equals(var16, var8.getOwnedWarp());
                  boolean var14 = !Objects.equals(var12, var8.getWarp());
                  if (var19 || var14) {
                     World var15 = var2.getExternalData().getWorld();
                     TurnOffTeleportersSystem.updatePortalBlocksInWorld(var15);
                  }
               }
            }
         }
      }
   }

   class="kw">public enum Mode {
      FULL,
      WARP;

      @Nonnull
      class="kw">public class="kw">static class="kw">final Codec<TeleporterSettingsPage.Mode> CODEC = new EnumCodec<>(TeleporterSettingsPage.Mode.class);

      Mode() {
      }
   }

   class="kw">public class="kw">static class PageEventData {
      @Nonnull
      class="kw">public class="kw">static class="kw">final String KEY_BLOCK_RELATIVE = "@BlockRelative";
      @Nonnull
      class="kw">public class="kw">static class="kw">final String KEY_X = "@X";
      @Nonnull
      class="kw">public class="kw">static class="kw">final String KEY_Y = "@Y";
      @Nonnull
      class="kw">public class="kw">static class="kw">final String KEY_Z = "@Z";
      @Nonnull
      class="kw">public class="kw">static class="kw">final String KEY_X_IS_RELATIVE = "@XIsRelative";
      @Nonnull
      class="kw">public class="kw">static class="kw">final String KEY_Y_IS_RELATIVE = "@YIsRelative";
      @Nonnull
      class="kw">public class="kw">static class="kw">final String KEY_Z_IS_RELATIVE = "@ZIsRelative";
      @Nonnull
      class="kw">public class="kw">static class="kw">final String KEY_YAW = "@Yaw";
      @Nonnull
      class="kw">public class="kw">static class="kw">final String KEY_PITCH = "@Pitch";
      @Nonnull
      class="kw">public class="kw">static class="kw">final String KEY_ROLL = "@Roll";
      @Nonnull
      class="kw">public class="kw">static class="kw">final String KEY_YAW_IS_RELATIVE = "@YawIsRelative";
      @Nonnull
      class="kw">public class="kw">static class="kw">final String KEY_PITCH_IS_RELATIVE = "@PitchIsRelative";
      @Nonnull
      class="kw">public class="kw">static class="kw">final String KEY_ROLL_IS_RELATIVE = "@RollIsRelative";
      @Nonnull
      class="kw">public class="kw">static class="kw">final String KEY_WORLD = "@World";
      @Nonnull
      class="kw">public class="kw">static class="kw">final String KEY_WARP = "@Warp";
      @Nonnull
      class="kw">public class="kw">static class="kw">final String KEY_NEW_WARP = "@NewWarp";
      @Nonnull
      class="kw">public class="kw">static class="kw">final BuilderCodec<TeleporterSettingsPage.PageEventData> CODEC = BuilderCodec.builder(
            TeleporterSettingsPage.PageEventData.class, TeleporterSettingsPage.PageEventData::new
         )
         .append(new KeyedCodec<>("@BlockRelative", Codec.BOOLEAN), (var0, var1) -> var0.isBlockRelative = var1, var0 -> var0.isBlockRelative)
         .add()
         .append(new KeyedCodec<>("@X", Codec.DOUBLE), (var0, var1) -> var0.x = var1, var0 -> var0.x)
         .add()
         .append(new KeyedCodec<>("@Y", Codec.DOUBLE), (var0, var1) -> var0.y = var1, var0 -> var0.y)
         .add()
         .append(new KeyedCodec<>("@Z", Codec.DOUBLE), (var0, var1) -> var0.z = var1, var0 -> var0.z)
         .add()
         .append(new KeyedCodec<>("@XIsRelative", Codec.BOOLEAN), (var0, var1) -> var0.xIsRelative = var1, var0 -> var0.xIsRelative)
         .add()
         .append(new KeyedCodec<>("@YIsRelative", Codec.BOOLEAN), (var0, var1) -> var0.yIsRelative = var1, var0 -> var0.yIsRelative)
         .add()
         .append(new KeyedCodec<>("@ZIsRelative", Codec.BOOLEAN), (var0, var1) -> var0.zIsRelative = var1, var0 -> var0.zIsRelative)
         .add()
         .append(new KeyedCodec<>("@Yaw", Codec.FLOAT), (var0, var1) -> var0.yaw = var1, var0 -> var0.yaw)
         .add()
         .append(new KeyedCodec<>("@Pitch", Codec.FLOAT), (var0, var1) -> var0.pitch = var1, var0 -> var0.pitch)
         .add()
         .append(new KeyedCodec<>("@Roll", Codec.FLOAT), (var0, var1) -> var0.roll = var1, var0 -> var0.roll)
         .add()
         .append(new KeyedCodec<>("@YawIsRelative", Codec.BOOLEAN), (var0, var1) -> var0.yawIsRelative = var1, var0 -> var0.yawIsRelative)
         .add()
         .append(new KeyedCodec<>("@PitchIsRelative", Codec.BOOLEAN), (var0, var1) -> var0.pitchIsRelative = var1, var0 -> var0.pitchIsRelative)
         .add()
         .append(new KeyedCodec<>("@RollIsRelative", Codec.BOOLEAN), (var0, var1) -> var0.rollIsRelative = var1, var0 -> var0.rollIsRelative)
         .add()
         .append(new KeyedCodec<>("@World", Codec.STRING), (var0, var1) -> var0.world = var1, var0 -> var0.world)
         .add()
         .append(new KeyedCodec<>("@Warp", Codec.STRING), (var0, var1) -> var0.destinationWarp = var1, var0 -> var0.destinationWarp)
         .add()
         .append(new KeyedCodec<>("@NewWarp", Codec.STRING), (var0, var1) -> var0.warpName = var1, var0 -> var0.warpName)
         .add()
         .build();
      class="kw">public boolean isBlockRelative;
      class="kw">public double x;
      class="kw">public double y;
      class="kw">public double z;
      class="kw">public boolean xIsRelative;
      class="kw">public boolean yIsRelative;
      class="kw">public boolean zIsRelative;
      class="kw">public float yaw;
      class="kw">public float pitch;
      class="kw">public float roll;
      class="kw">public boolean yawIsRelative;
      class="kw">public boolean pitchIsRelative;
      class="kw">public boolean rollIsRelative;
      class="kw">public String world;
      class="kw">public String destinationWarp;
      @Nullable
      class="kw">public String warpName;

      class="kw">public PageEventData() {
      }
   }
}