001 package org.bukkit; 002 003 /** 004 * An enum to specify a rotation based orientation, like that on a clock. 005 * <p> 006 * It represents how something is viewed, as opposed to cardinal directions. 007 */ 008 public enum Rotation { 009 010 /** 011 * No rotation 012 */ 013 NONE, 014 /** 015 * Rotated clockwise by 90 degrees 016 */ 017 CLOCKWISE, 018 /** 019 * Flipped upside-down, a 180 degree rotation 020 */ 021 FLIPPED, 022 /** 023 * Rotated counter-clockwise by 90 degrees 024 */ 025 COUNTER_CLOCKWISE, 026 ; 027 028 private static final Rotation [] rotations = values(); 029 030 /** 031 * Rotate clockwise by 90 degrees. 032 * 033 * @return the relative rotation 034 */ 035 public Rotation rotateClockwise() { 036 return rotations[(this.ordinal() + 1) & 0x3]; 037 } 038 039 /** 040 * Rotate counter-clockwise by 90 degrees. 041 * 042 * @return the relative rotation 043 */ 044 public Rotation rotateCounterClockwise() { 045 return rotations[(this.ordinal() - 1) & 0x3]; 046 } 047 }