TeleportHistory class

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

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

implements: Component<EntityStore>

Поля (26)

МодификаторыТипИмя
final int MAX_TELEPORT_HISTORY
break
private final String message
private final Vector3d position
return
return
private final Rotation3f rotation
TeleportHistory var1
TeleportHistory.Waypoint var11
World var12
HeadRotation var13
Teleport var14
Vector3d var15
int var16
int var17
World var18
TransformComponent var19
Store var3
Store var3
PlayerRef var6
Universe var7
TeleportHistory.Waypoint var8
var8
World var9
var9
private final String world

Методы (16)

МодификаторыВозвратСигнатура
public Waypointpublic Waypoint(@Nonnull String var1, @Nonnull Vector3d var2, @Nonnull Rotation3f var3, @Nonnull String var4)
public void appendvoid append(@Nonnull World var1, @Nonnull Vector3d var2, @Nonnull Rotation3f var3, @Nonnull String var4)
public void backvoid back(@Nonnull Ref<EntityStore> var1, int var2)
for for(int var10 = 0; var10 < var4; var10++)
public void forwardvoid forward(@Nonnull Ref<EntityStore> var1, int var2)
public int getBackSizeint getBackSize()
public int getForwardSizeint getForwardSize()
static void govoid go(@Nonnull Store<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull Deque<TeleportHistory.Waypoint> var2, @Nonnull Deque<TeleportHistory.Waypoint> var3, int var4, boolean var5)
abstract go go(var3, var1, this.forward, this.back, var2, true)
abstract go go(var3, var1, this.back, this.forward, var2, false)
if if(var4 <= 0)
if if(var8 == null)
if if(var12 == null)
if if(var8 == null)
if if(var19 != null && var13 != null)
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 + "'}";
      }
   }
}