Waypoint class

Пакет: com.hypixel.hytale.builtin.teleport.components

Файл: com/hypixel/hytale/builtin/teleport/components/TeleportHistory.java

Поля (4)

МодификаторыТипИмя
private final String message
private final Vector3d position
private final Rotation3f rotation
private final String world

Методы (1)

МодификаторыВозвратСигнатура
public String toStringpublic String toString()

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.teleport.TeleportPlugin;
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.vector.Rotation3f;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.HeadRotation;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.teleport.Teleport;
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.EntityStore;
class="kw">import java.util.ArrayDeque;
class="kw">import java.util.Deque;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;

class="kw">public class TeleportHistory class="kw">implements Component<EntityStore> {
   class="kw">private class="kw">static class="kw">final int MAX_TELEPORT_HISTORY = 100;
   class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_TELEPORT_NOT_FURTHER = Message.translation("server.commands.teleport.notFurther");
   class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_TELEPORT_NOT_FURTHER_BACK = Message.translation("server.commands.teleport.notFurtherBack");
   @Nonnull
   class="kw">private class="kw">final Deque<TeleportHistory.Waypoint> back = new ArrayDeque<>();
   @Nonnull
   class="kw">private class="kw">final Deque<TeleportHistory.Waypoint> forward = new ArrayDeque<>();

   @Nonnull
   class="kw">public class="kw">static ComponentType<EntityStore, TeleportHistory> getComponentType() {
      class="kw">return TeleportPlugin.get().getTeleportHistoryComponentType();
   }

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

   class="kw">public void forward(@Nonnull Ref<EntityStore> var1, int var2) {
      Store var3 = var1.getStore();
      go(var3, var1, this.forward, this.back, var2, true);
   }

   class="kw">public void back(@Nonnull Ref<EntityStore> var1, int var2) {
      Store var3 = var1.getStore();
      go(var3, var1, this.back, this.forward, var2, false);
   }

   class="kw">public int getForwardSize() {
      class="kw">return this.forward.size();
   }

   class="kw">public int getBackSize() {
      class="kw">return this.back.size();
   }

   class="kw">private class="kw">static void go(
      @Nonnull Store<EntityStore> var0,
      @Nonnull Ref<EntityStore> var1,
      @Nonnull Deque<TeleportHistory.Waypoint> var2,
      @Nonnull Deque<TeleportHistory.Waypoint> var3,
      int var4,
      boolean var5
   ) {
      if (var4 <= 0) {
         throw new IllegalArgumentException(String.valueOf(var4));
      }

      PlayerRef var6 = var0.getComponent(var1, PlayerRef.getComponentType());
      assert var6 != null;
      Universe var7 = Universe.get();
      TeleportHistory.Waypoint var8 = null;
      World var9 = null;

      for (int var10 = 0; var10 < var4; var10++) {
         if (var2.isEmpty()) {
            if (var8 == null) {
               var6.sendMessage(var5 ? MESSAGE_COMMANDS_TELEPORT_NOT_FURTHER : MESSAGE_COMMANDS_TELEPORT_NOT_FURTHER_BACK);
               class="kw">return;
            }
            break;
         }

         TeleportHistory.Waypoint var11 = var2.pop();
         World var12 = var7.getWorld(var11.world);
         if (var12 == null) {
            var6.sendMessage(Message.translation("server.commands.teleport.worldRemoved").param("name", var11.world));
            class="kw">return;
         }

         var8 = var11;
         var9 = var12;
      }

      if (var8 == null) {
         var6.sendMessage(var5 ? MESSAGE_COMMANDS_TELEPORT_NOT_FURTHER : MESSAGE_COMMANDS_TELEPORT_NOT_FURTHER_BACK);
      } else {
         World var18 = var0.getExternalData().getWorld();
         TransformComponent var19 = var0.getComponent(var1, TransformComponent.getComponentType());
         HeadRotation var13 = var0.getComponent(var1, HeadRotation.getComponentType());
         if (var19 != null && var13 != null) {
            var3.push(
               new TeleportHistory.Waypoint(
                  var18.getName(), new Vector3d(var19.getPosition()), var13.getRotation().clone(), var8.message != null ? var8.message : ""
               )
            );
         }

         Teleport var14 = Teleport.createForPlayer(var9, var8.position, var8.rotation);
         var0.addComponent(var1, Teleport.getComponentType(), var14);
         Vector3d var15 = var8.position;
         int var16 = var2.size();
         int var17 = var3.size();
         if (var8.message != null && !var8.message.isEmpty()) {
            var6.sendMessage(
               (var5
                     ? Message.translation("server.commands.teleport.teleportedForwardToWaypoint")
                     : Message.translation("server.commands.teleport.teleportedBackToWaypoint"))
                  .param("name", var8.message)
                  .param("x", var15.x())
                  .param("y", var15.y())
                  .param("z", var15.z())
                  .param("remaining", var16)
                  .param("otherDirection", var17)
            );
         } else {
            var6.sendMessage(
               (var5
                     ? Message.translation("server.commands.teleport.teleportedForwardToCoordinates")
                     : Message.translation("server.commands.teleport.teleportedBackToCoordinates"))
                  .param("x", var15.x())
                  .param("y", var15.y())
                  .param("z", var15.z())
                  .param("remaining", var16)
                  .param("otherDirection", var17)
            );
         }
      }
   }

   class="kw">public void append(@Nonnull World var1, @Nonnull Vector3d var2, @Nonnull Rotation3f var3, @Nonnull String var4) {
      this.back.push(new TeleportHistory.Waypoint(var1.getName(), var2, var3, var4));
      this.forward.clear();

      while (this.back.size() > 100) {
         this.back.removeLast();
      }
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "TeleportHistory{back=" + this.back + ", forward=" + this.forward + "}";
   }

   @Nonnull
   @Override
   class="kw">public Component<EntityStore> clone() {
      TeleportHistory var1 = new TeleportHistory();
      var1.back.addAll(this.back);
      var1.forward.addAll(this.forward);
      class="kw">return var1;
   }

   class="kw">public class="kw">static class Waypoint {
      class="kw">private class="kw">final String world;
      class="kw">private class="kw">final Vector3d position;
      class="kw">private class="kw">final Rotation3f rotation;
      class="kw">private class="kw">final String message;

      class="kw">public Waypoint(@Nonnull String var1, @Nonnull Vector3d var2, @Nonnull Rotation3f var3, @Nonnull String var4) {
         this.world = var1;
         this.position = var2;
         this.rotation = var3;
         this.message = var4;
      }

      @Nonnull
      @Override
      class="kw">public String toString() {
         class="kw">return "Waypoint{world='" + this.world + "', position=" + this.position + ", rotation=" + this.rotation + ", message='" + this.message + "'}";
      }
   }
}