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

org.bukkit.material.Tree Maven / Gradle / Ivy

There is a newer version: 2.4.0
Show newest version
package org.bukkit.material;

import org.bukkit.Material;
import org.bukkit.TreeSpecies;
import org.bukkit.block.BlockFace;

/**
 * Represents the different types of Trees.
 */
public class Tree extends MaterialData {
  public Tree() {
    super(Material.LOG);
  }

  public Tree(TreeSpecies species) {
    this();
    setSpecies(species);
  }

  public Tree(TreeSpecies species, BlockFace dir) {
    this();
    setSpecies(species);
    setDirection(dir);
  }

  /**
   * @param type the raw type id
   * @deprecated Magic value
   */
  @Deprecated
  public Tree(final int type) {
    super(type);
  }

  public Tree(final Material type) {
    super(type);
  }

  /**
   * @param type the raw type id
   * @param data the raw data value
   * @deprecated Magic value
   */
  @Deprecated
  public Tree(final int type, final byte data) {
    super(type, data);
  }

  /**
   * @param type the type
   * @param data the raw data value
   * @deprecated Magic value
   */
  @Deprecated
  public Tree(final Material type, final byte data) {
    super(type, data);
  }

  /**
   * Gets the current species of this tree
   *
   * @return TreeSpecies of this tree
   */
  public TreeSpecies getSpecies() {
    return TreeSpecies.getByData((byte) (getData() & 0x3));
  }

  /**
   * Sets the species of this tree
   *
   * @param species New species of this tree
   */
  public void setSpecies(TreeSpecies species) {
    setData((byte) ((getData() & 0xC) | species.getData()));
  }

  /**
   * Get direction of the log
   *
   * @return one of:
   * 
    *
  • BlockFace.TOP for upright (default) *
  • BlockFace.NORTH (east-west) *
  • BlockFace.WEST (north-south) *
  • BlockFace.SELF (directionless) *
*/ public BlockFace getDirection() { switch ((getData() >> 2) & 0x3) { case 0: // Up-down default: return BlockFace.UP; case 1: // North-south return BlockFace.WEST; case 2: // East-west return BlockFace.NORTH; case 3: // Directionless (bark on all sides) return BlockFace.SELF; } } /** * Set direction of the log * * @param dir - direction of end of log (BlockFace.SELF for no direction) */ public void setDirection(BlockFace dir) { int dat; switch (dir) { case UP: case DOWN: default: dat = 0; break; case WEST: case EAST: dat = 1; break; case NORTH: case SOUTH: dat = 2; break; case SELF: dat = 3; break; } setData((byte) ((getData() & 0x3) | (dat << 2))); } @Override public String toString() { return getSpecies() + " " + getDirection() + " " + super.toString(); } @Override public Tree clone() { return (Tree) super.clone(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy