TeleporterSettingsPage class

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

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

extends: InteractiveCustomUIPage<TeleporterSettingsPage.PageEventData>

Поля (72)

МодификаторыТипИмя
public static final Codec<TeleporterSettingsPage.Mode> CODEC
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
FULL, WARP
break
break
public String destinationWarp
public boolean isBlockRelative
public float pitch
public boolean pitchIsRelative
return
return
public float roll
public boolean rollIsRelative
boolean var10
var10
var10
boolean var11
byte var12
String var12
String var13
Transform var13
Transform var14
boolean var14
UUID var15
World var15
String var16
UICommandBuilder var17
UICommandBuilder var18
boolean var19
List var2
ObjectArrayList var3
ObjectListIterator var4
Player var4
String var5
Warp var5
String var5
Teleporter var6
BlockModule.BlockStateInfo var6
Message var7
var7
var7
Ref var7
String var8
Teleporter var8
ObjectArrayList var9
String var9
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

Методы (17)

МодификаторыВозвратСигнатура
Mode Mode()
public PageEventDatapublic PageEventData()
static List<DropdownEntryInfo> getWarpsSortedByIdList<DropdownEntryInfo> getWarpsSortedById(@NullableDecl String var0, @NullableDecl String var1)
public void handleDataEventvoid handleDataEvent(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull TeleporterSettingsPage.PageEventData var3)
if if(var6 == null)
if if(var14 != null)
if if(var14 != null)
if if(var4 != null)
if if(var6 == null)
if if(var8 == null)
if if(var9 == null)
if if(var3.warpName == null)
if if(var11)
if if(var19 || var14)
abstract super super(var1, CustomPageLifetime.CanDismissOrCloseThroughInteraction, TeleporterSettingsPage.PageEventData.CODEC)
switch switch(this.mode)
switch switch(this.mode)

Исходный код

Показать/скрыть
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() {
      }
   }
}