Script API - v1.21.130.22
    Preparing search index...

    Contains the input information for a client instance.

    Input APIs are released from Beta APIs in Minecraft v1.21.70. Here's a video from Mojang that covers the input APIs.

    Index

    Constructors

    Properties

    lastInputModeUsed: InputMode

    The last input mode used by the player.

    This property can throw when used.

    minecraftcommon.EngineError

    InvalidEntityError

    This property can't be read in early-execution mode.

    touchOnlyAffectsHotbar: boolean

    Whether the player touch input only affects the touchbar or not.

    This property can throw when used.

    InvalidEntityError

    This property can't be read in early-execution mode.

    Methods

    • Returns Vector2

      This function can throw errors.

      InvalidEntityError

      This function can't be called in early-execution mode.

      // Script by JaylyMC

      import { system, world } from "@minecraft/server";
      /**
      @description
      Retrieve player's movement direction. This works with players with inputpermission disabled.

      This complex function is made specificallly for players with joystick control mode.
      Because dragging the joystick can result in a range of float values, unlike D-Pad or any other controls.

      @param player player's movement vector to retrieve
      @returns movement direction

      Reference for movement vector, for keyboard movement control:
      - Walk forward: `(0, 1)`
      - Walk backward: `(0, -1)`
      - Strafe left: `(1, 0)`
      - Strafe right: `(-1, 0)`
      - Not moving: `(0, 0)`
      /
      function getPlayerControlMovement(player) {
      var movement = player.inputInfo.getMovementVector();
      // Threshold to classify directions
      var threshold = 0.5;
      // Determine the normalized direction
      var normalizedX = Math.abs(movement.x) >= threshold ? (movement.x > 0 ? 1 : -1) : 0;
      var normalizedY = Math.abs(movement.y) >= threshold ? (movement.y > 0 ? 1 : -1) : 0;
      // Define direction based on normalized x and y
      if (normalizedX === 0 && normalizedY === 1) return "Forward";
      if (normalizedX === 0 && normalizedY === -1) return "Backward";
      if (normalizedX === 1 && normalizedY === 0) return "Left";
      if (normalizedX === -1 && normalizedY === 0) return "Right";
      if (normalizedX === 1 && normalizedY === 1) return "Forward-left";
      if (normalizedX === -1 && normalizedY === 1) return "Forward-right";
      if (normalizedX === 1 && normalizedY === -1) return "Backward-left";
      if (normalizedX === -1 && normalizedY === -1) return "Backward-right";
      if (normalizedX === 0 && normalizedY === 0) return "None";
      // Handle unexpected cases
      return "Unknown";
      }
      // Example to display movement control
      system.runInterval(function () {
      world.getAllPlayers().forEach(function (player) {
      var status = getPlayerControlMovement(player);
      player.onScreenDisplay.setActionBar("Movement: ".concat(status));
      });
      });
      // Script by JaylyMC

      import { Player, system, world } from "@minecraft/server";

      // Movement direction enum
      enum MovementDirection {
      Forward = "Forward",
      Backward = "Backward",
      Left = "Left",
      Right = "Right",
      ForwardLeft = "Forward-left",
      ForwardRight = "Forward-right",
      BackwardLeft = "Backward-left",
      BackwardRight = "Backward-right",
      None = "None",
      Unknown = "Unknown",
      }

      /**
      @description
      Retrieve player's movement direction. This works with players with inputpermission disabled.

      This complex function is made specificallly for players with joystick control mode.
      Because dragging the joystick can result in a range of float values, unlike D-Pad or any other controls.

      @param player player's movement vector to retrieve
      @returns movement direction

      Reference for movement vector, for keyboard movement control:
      - Walk forward: `(0, 1)`
      - Walk backward: `(0, -1)`
      - Strafe left: `(1, 0)`
      - Strafe right: `(-1, 0)`
      - Not moving: `(0, 0)`
      /
      function getPlayerControlMovement(player: Player): string {
      const movement = player.inputInfo.getMovementVector();
      // Threshold to classify directions
      const threshold = 0.5;

      // Determine the normalized direction
      const normalizedX = Math.abs(movement.x) >= threshold ? (movement.x > 0 ? 1 : -1) : 0;
      const normalizedY = Math.abs(movement.y) >= threshold ? (movement.y > 0 ? 1 : -1) : 0;

      // Define direction based on normalized x and y
      if (normalizedX === 0 && normalizedY === 1) return MovementDirection.Forward;
      if (normalizedX === 0 && normalizedY === -1) return MovementDirection.Backward;
      if (normalizedX === 1 && normalizedY === 0) return MovementDirection.Left;
      if (normalizedX === -1 && normalizedY === 0) return MovementDirection.Right;
      if (normalizedX === 1 && normalizedY === 1) return MovementDirection.ForwardLeft;
      if (normalizedX === -1 && normalizedY === 1) return MovementDirection.ForwardRight;
      if (normalizedX === 1 && normalizedY === -1) return MovementDirection.BackwardLeft;
      if (normalizedX === -1 && normalizedY === -1) return MovementDirection.BackwardRight;
      if (normalizedX === 0 && normalizedY === 0) return MovementDirection.None;

      // Handle unexpected cases
      return MovementDirection.Unknown;
      }

      // Example to display movement control
      system.runInterval(() => {
      world.getAllPlayers().forEach((player) => {
      const status = getPlayerControlMovement(player);
      player.onScreenDisplay.setActionBar(`Movement: ${status}`);
      });
      });