Teleporter class

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

Файл: com/hypixel/hytale/builtin/adventure/teleporter/component/Teleporter.java

implements: Component<ChunkStore>

Поля (15)

МодификаторыТипИмя
VALID, NAME_INVALID, WARP_INVALID, CREATOR_INVALID, POSITION_INVALID
Teleporter var1
int var10
Ref var11
String var3
World var4
TeleportPlugin var4
Transform var5
String var5
Transform var6
Warp var6
Warp var7
Vector3d var7
int var8
int var9

Методы (19)

МодификаторыВозвратСигнатура
ValidationResult ValidationResult()
static ComponentType<ChunkStore, Teleporter> getComponentTypeComponentType<ChunkStore, Teleporter> getComponentType()
public byte getRelativeMaskbyte getRelativeMask()
public boolean hasOwnedWarpboolean hasOwnedWarp()
if if(this.transform != null)
if if(this.worldUuid != null)
if if(var4 != null)
if if(this.relativeMask != 0)
if if(this.relativeMask != 0)
public boolean isCustomNameboolean isCustomName()
public boolean isValidboolean isValid()
public void setIsCustomNamevoid setIsCustomName(boolean var1)
public void setOwnedWarpvoid setOwnedWarp(@Nullable String var1)
public void setRelativeMaskvoid setRelativeMask(byte var1)
public void setTransformvoid setTransform(@Nullable Transform var1)
public void setWarpvoid setWarp(@Nullable String var1)
public void setWarpNameWordListKeyvoid setWarpNameWordListKey(String var1)
public void setWorldUuidvoid setWorldUuid(@Nullable UUID var1)
static Teleporter.ValidationResult validateWarpTeleporter.ValidationResult validateWarp(@Nonnull Store<ChunkStore> var0, @Nonnull Teleporter var1, @Nonnull BlockModule.BlockStateInfo var2)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.adventure.teleporter.TeleporterPlugin;
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.component.Component;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.math.vector.Transform;
class="kw">import com.hypixel.hytale.server.core.asset.type.wordlist.WordList;
class="kw">import com.hypixel.hytale.server.core.modules.block.BlockModule;
class="kw">import com.hypixel.hytale.server.core.modules.entity.teleport.Teleport;
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 java.util.Locale;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3i;

class="kw">public class Teleporter class="kw">implements Component<ChunkStore> {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<Teleporter> CODEC = BuilderCodec.builder(Teleporter.class, Teleporter::new)
      .append(new KeyedCodec<>("World", Codec.UUID_BINARY), (var0, var1) -> var0.worldUuid = var1, var0 -> var0.worldUuid)
      .add()
      .append(new KeyedCodec<>("Transform", Transform.PARTIAL_TELEPORT_CODEC), (var0, var1) -> var0.transform = var1, var0 -> var0.transform)
      .add()
      .append(new KeyedCodec<>("Relative", Codec.BYTE), (var0, var1) -> var0.relativeMask = var1, var0 -> var0.relativeMask)
      .add()
      .append(new KeyedCodec<>("Warp", Codec.STRING), (var0, var1) -> var0.warp = var1, var0 -> var0.warp)
      .add()
      .append(new KeyedCodec<>("OwnedWarp", Codec.STRING), (var0, var1) -> var0.ownedWarp = var1, var0 -> var0.ownedWarp)
      .add()
      .append(new KeyedCodec<>("IsCustomName", Codec.BOOLEAN), (var0, var1) -> var0.isCustomName = var1, var0 -> var0.isCustomName)
      .add()
      .<String>append(new KeyedCodec<>("WarpNameWordList", Codec.STRING), (var0, var1) -> var0.warpNameWordListKey = var1, var0 -> var0.warpNameWordListKey)
      .documentation("The ID of the Word list to select class="kw">default warp names from")
      .add()
      .build();
   class="kw">public class="kw">static class="kw">final String CREATOR_IDENTIFIER = "*Teleporter";
   class="kw">public class="kw">static class="kw">final String ACTIVATE_STATE = "Active";
   class="kw">public class="kw">static class="kw">final String INACTIVE_STATE = "class="kw">default";
   @Nullable
   class="kw">private UUID worldUuid;
   @Nullable
   class="kw">private Transform transform;
   class="kw">private byte relativeMask = 0;
   @Nullable
   class="kw">private String warp;
   @Deprecated
   @Nullable
   class="kw">private String ownedWarp;
   class="kw">private boolean isCustomName;
   class="kw">private String warpNameWordListKey;

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

   class="kw">public class="kw">static ComponentType<ChunkStore, Teleporter> getComponentType() {
      class="kw">return TeleporterPlugin.get().getTeleporterComponentType();
   }

   @Nullable
   class="kw">public UUID getWorldUuid() {
      class="kw">return this.worldUuid;
   }

   class="kw">public void setWorldUuid(@Nullable UUID var1) {
      this.worldUuid = var1;
   }

   @Nullable
   class="kw">public Transform getTransform() {
      class="kw">return this.transform;
   }

   class="kw">public void setTransform(@Nullable Transform var1) {
      this.transform = var1;
   }

   class="kw">public byte getRelativeMask() {
      class="kw">return this.relativeMask;
   }

   class="kw">public void setRelativeMask(byte var1) {
      this.relativeMask = var1;
   }

   @Nullable
   class="kw">public String getWarp() {
      class="kw">return this.warp;
   }

   class="kw">public void setWarp(@Nullable String var1) {
      this.warp = var1 != null && !var1.isEmpty() ? var1 : null;
   }

   @Nullable
   class="kw">public String getOwnedWarp() {
      class="kw">return this.ownedWarp;
   }

   class="kw">public void setOwnedWarp(@Nullable String var1) {
      this.ownedWarp = var1;
   }

   class="kw">public boolean hasOwnedWarp() {
      class="kw">return this.ownedWarp != null && !this.ownedWarp.isEmpty();
   }

   class="kw">public void setWarpNameWordListKey(String var1) {
      this.warpNameWordListKey = var1;
   }

   class="kw">public boolean isCustomName() {
      class="kw">return this.isCustomName;
   }

   class="kw">public void setIsCustomName(boolean var1) {
      this.isCustomName = var1;
   }

   @Nullable
   class="kw">public String getWarpNameWordListKey() {
      class="kw">return this.warpNameWordListKey;
   }

   @Nullable
   class="kw">public WordList getWarpNameWordList() {
      class="kw">return WordList.getWordList(this.warpNameWordListKey);
   }

   class="kw">public boolean isValid() {
      if (this.warp != null && !this.warp.isEmpty()) {
         class="kw">return TeleportPlugin.get().getWarps().get(this.warp.toLowerCase(Locale.ROOT)) != null;
      } else if (this.transform != null) {
         class="kw">return this.worldUuid != null ? Universe.get().getWorld(this.worldUuid) != null : true;
      } else {
         class="kw">return false;
      }
   }

   @Nonnull
   @Override
   class="kw">public Component<ChunkStore> clone() {
      Teleporter var1 = new Teleporter();
      var1.worldUuid = this.worldUuid;
      var1.transform = this.transform != null ? this.transform.clone() : null;
      var1.relativeMask = this.relativeMask;
      var1.warp = this.warp;
      var1.ownedWarp = this.ownedWarp;
      var1.isCustomName = this.isCustomName;
      var1.warpNameWordListKey = this.warpNameWordListKey;
      class="kw">return var1;
   }

   @Nullable
   class="kw">public Teleport toTeleport(@Nonnull Vector3d var1, @Nonnull Rotation3f var2, @Nonnull Vector3i var3) {
      if (this.warp != null && !this.warp.isEmpty()) {
         Warp var7 = TeleportPlugin.get().getWarps().get(this.warp.toLowerCase(Locale.ROOT));
         class="kw">return var7 != null ? var7.toTeleport() : null;
      }

      if (this.transform != null) {
         if (this.worldUuid != null) {
            World var4 = Universe.get().getWorld(this.worldUuid);
            if (var4 != null) {
               if (this.relativeMask != 0) {
                  Transform var5 = new Transform(this.transform);
                  Transform.applyMaskedRelativeTransform(var5, this.relativeMask, var1, var2, var3);
                  class="kw">return Teleport.createForPlayer(var4, var5);
               }

               class="kw">return Teleport.createForPlayer(var4, this.transform);
            }
         }

         if (this.relativeMask != 0) {
            Transform var6 = new Transform(this.transform);
            Transform.applyMaskedRelativeTransform(var6, this.relativeMask, var1, var2, var3);
            class="kw">return Teleport.createForPlayer(var6);
         } else {
            class="kw">return Teleport.createForPlayer(this.transform);
         }
      } else {
         class="kw">return null;
      }
   }

   class="kw">public class="kw">static Teleporter.ValidationResult validateWarp(@Nonnull Store<ChunkStore> var0, @Nonnull Teleporter var1, @Nonnull BlockModule.BlockStateInfo var2) {
      String var3 = var1.getOwnedWarp();
      if (var3 != null && !var3.isEmpty()) {
         TeleportPlugin var4 = TeleportPlugin.get();
         String var5 = var3.toLowerCase(Locale.ROOT);
         Warp var6 = var4.getWarps().get(var5);
         if (var6 != null && var6.getTransform() != null) {
            if (!var6.getCreator().equals("*Teleporter")) {
               class="kw">return Teleporter.ValidationResult.CREATOR_INVALID;
            }

            Vector3d var7 = var6.getTransform().getPosition();
            int var8 = MathUtil.floor(var7.x);
            int var9 = MathUtil.floor(var7.y);
            int var10 = MathUtil.floor(var7.z);
            if (var2.getIndex() != ChunkUtil.indexBlock(var8, var9, var10)) {
               class="kw">return Teleporter.ValidationResult.POSITION_INVALID;
            }

            Ref var11 = var0.getExternalData().getChunkSectionReferenceAtBlock(var8, var9, var10);
            class="kw">return !var2.getSectionRef().equals(var11) ? Teleporter.ValidationResult.POSITION_INVALID : Teleporter.ValidationResult.VALID;
         } else {
            class="kw">return Teleporter.ValidationResult.WARP_INVALID;
         }
      } else {
         class="kw">return Teleporter.ValidationResult.NAME_INVALID;
      }
   }

   class="kw">public enum ValidationResult {
      VALID,
      NAME_INVALID,
      WARP_INVALID,
      CREATOR_INVALID,
      POSITION_INVALID;

      ValidationResult() {
      }
   }
}