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 + "'}";
}
}
}