HyCodeYourTale
classpublicPriority 1

TeleportHomeCommand

com.hypixel.hytale.builtin.teleport.commands.teleport.TeleportHomeCommand

extends AbstractPlayerCommand

0

Methods

0

Public Methods

0

Fields

1

Constructors

Constants

MessageMESSAGE_COMMANDS_TELEPORT_TELEPORTED_SELF_HOME= Message.translation("server.commands.teleport.teleportedSelfHome")

Constructors

public
TeleportHomeCommand()

Inheritance

Parent
Current
Interface
Child

Use mouse wheel to zoom, drag to pan. Click nodes to navigate.

Related Classes

Source Code

package com.hypixel.hytale.builtin.teleport.commands.teleport;

import com.hypixel.hytale.builtin.teleport.components.TeleportHistory;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.math.vector.Transform;
import com.hypixel.hytale.math.vector.Vector3d;
import com.hypixel.hytale.math.vector.Vector3f;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.modules.entity.component.HeadRotation;
import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
import com.hypixel.hytale.server.core.modules.entity.teleport.Teleport;
import com.hypixel.hytale.server.core.permissions.HytalePermissions;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;

public class TeleportHomeCommand extends AbstractPlayerCommand {
   @Nonnull
   private static final Message MESSAGE_COMMANDS_TELEPORT_TELEPORTED_SELF_HOME = Message.translation("server.commands.teleport.teleportedSelfHome");

   public TeleportHomeCommand() {
      super("home", "server.commands.home.desc");
      this.requirePermission(HytalePermissions.fromCommand("teleport.home"));
   }

   @Override
   protected void execute(
      @Nonnull CommandContext context, @Nonnull Store<EntityStore> store, @Nonnull Ref<EntityStore> ref, @Nonnull PlayerRef playerRef, @Nonnull World world
   ) {
      TransformComponent transformComponent = store.getComponent(ref, TransformComponent.getComponentType());

      assert transformComponent != null;

      HeadRotation headRotationComponent = store.getComponent(ref, HeadRotation.getComponentType());

      assert headRotationComponent != null;

      Vector3d previousPos = transformComponent.getPosition().clone();
      Vector3f previousHeadRotation = headRotationComponent.getRotation().clone();
      TeleportHistory teleportHistoryComponent = store.ensureAndGetComponent(ref, TeleportHistory.getComponentType());
      teleportHistoryComponent.append(world, previousPos, previousHeadRotation, "Home");
      Transform homeTransform = Player.getRespawnPosition(ref, world.getName(), store);
      Teleport teleportComponent = Teleport.createForPlayer(null, homeTransform);
      store.addComponent(ref, Teleport.getComponentType(), teleportComponent);
      context.sendMessage(MESSAGE_COMMANDS_TELEPORT_TELEPORTED_SELF_HOME);
   }
}