All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bukkit.map.MapCursor Maven / Gradle / Ivy

package org.bukkit.map;

/**
 * Represents a cursor on a map.
 */
public final class MapCursor {
  private byte x, y;
  private byte direction, type;
  private boolean visible;

  /**
   * Initialize the map cursor.
   *
   * @param x         The x coordinate, from -128 to 127.
   * @param y         The y coordinate, from -128 to 127.
   * @param direction The facing of the cursor, from 0 to 15.
   * @param type      The type (color/style) of the map cursor.
   * @param visible   Whether the cursor is visible by default.
   * @deprecated Magic value
   */
  @Deprecated
  public MapCursor(byte x, byte y, byte direction, byte type, boolean visible) {
    this.x = x;
    this.y = y;
    setDirection(direction);
    setRawType(type);
    this.visible = visible;
  }

  /**
   * Get the X position of this cursor.
   *
   * @return The X coordinate.
   */
  public byte getX() {
    return x;
  }

  /**
   * Set the X position of this cursor.
   *
   * @param x The X coordinate.
   */
  public void setX(byte x) {
    this.x = x;
  }

  /**
   * Get the Y position of this cursor.
   *
   * @return The Y coordinate.
   */
  public byte getY() {
    return y;
  }

  /**
   * Set the Y position of this cursor.
   *
   * @param y The Y coordinate.
   */
  public void setY(byte y) {
    this.y = y;
  }

  /**
   * Get the direction of this cursor.
   *
   * @return The facing of the cursor, from 0 to 15.
   */
  public byte getDirection() {
    return direction;
  }

  /**
   * Set the direction of this cursor.
   *
   * @param direction The facing of the cursor, from 0 to 15.
   */
  public void setDirection(byte direction) {
    if (direction < 0 || direction > 15) {
      throw new IllegalArgumentException("Direction must be in the range 0-15");
    }
    this.direction = direction;
  }

  /**
   * Get the type of this cursor.
   *
   * @return The type (color/style) of the map cursor.
   */
  public Type getType() {
    return Type.byValue(type);
  }

  /**
   * Set the type of this cursor.
   *
   * @param type The type (color/style) of the map cursor.
   */
  public void setType(Type type) {
    setRawType(type.value);
  }

  /**
   * Get the type of this cursor.
   *
   * @return The type (color/style) of the map cursor.
   * @deprecated Magic value
   */
  @Deprecated
  public byte getRawType() {
    return type;
  }

  /**
   * Set the type of this cursor.
   *
   * @param type The type (color/style) of the map cursor.
   * @deprecated Magic value
   */
  @Deprecated
  public void setRawType(byte type) {
    if (type < 0 || type > 15) {
      throw new IllegalArgumentException("Type must be in the range 0-15");
    }
    this.type = type;
  }

  /**
   * Get the visibility status of this cursor.
   *
   * @return True if visible, false otherwise.
   */
  public boolean isVisible() {
    return visible;
  }

  /**
   * Set the visibility status of this cursor.
   *
   * @param visible True if visible.
   */
  public void setVisible(boolean visible) {
    this.visible = visible;
  }

  /**
   * Represents the standard types of map cursors. More may be made
   * available by texture packs - the value is used by the client as an
   * index in the file './misc/mapicons.png' from minecraft.jar or from a
   * texture pack.
   */
  public enum Type {
    WHITE_POINTER(0),
    GREEN_POINTER(1),
    RED_POINTER(2),
    BLUE_POINTER(3),
    WHITE_CROSS(4);

    private final byte value;

    Type(int value) {
      this.value = (byte) value;
    }

    /**
     * @param value the value
     * @return the matching type
     * @deprecated Magic value
     */
    @Deprecated
    public static Type byValue(byte value) {
      for (Type t : values()) {
        if (t.value == value) return t;
      }
      return null;
    }

    /**
     * @return the value
     * @deprecated Magic value
     */
    @Deprecated
    public byte getValue() {
      return value;
    }
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy