001 package org.bukkit.material;
002
003 import org.bukkit.Material;
004 import org.bukkit.block.BlockFace;
005
006 /**
007 * Represents a dispenser.
008 */
009 public class Dispenser extends FurnaceAndDispenser {
010
011 public Dispenser() {
012 super(Material.DISPENSER);
013 }
014
015 public Dispenser(BlockFace direction) {
016 this();
017 setFacingDirection(direction);
018 }
019
020 /**
021 *
022 * @deprecated Magic value
023 */
024 @Deprecated
025 public Dispenser(final int type) {
026 super(type);
027 }
028
029 public Dispenser(final Material type) {
030 super(type);
031 }
032
033 /**
034 *
035 * @deprecated Magic value
036 */
037 @Deprecated
038 public Dispenser(final int type, final byte data) {
039 super(type, data);
040 }
041
042 /**
043 *
044 * @deprecated Magic value
045 */
046 @Deprecated
047 public Dispenser(final Material type, final byte data) {
048 super(type, data);
049 }
050
051 public void setFacingDirection(BlockFace face) {
052 byte data;
053
054 switch (face) {
055 case DOWN:
056 data = 0x0;
057 break;
058
059 case UP:
060 data = 0x1;
061 break;
062
063 case NORTH:
064 data = 0x2;
065 break;
066
067 case SOUTH:
068 data = 0x3;
069 break;
070
071 case WEST:
072 data = 0x4;
073 break;
074
075 case EAST:
076 default:
077 data = 0x5;
078 }
079
080 setData(data);
081 }
082
083 public BlockFace getFacing() {
084 int data = getData() & 0x7;
085
086 switch (data) {
087 case 0x0:
088 return BlockFace.DOWN;
089
090 case 0x1:
091 return BlockFace.UP;
092
093 case 0x2:
094 return BlockFace.NORTH;
095
096 case 0x3:
097 return BlockFace.SOUTH;
098
099 case 0x4:
100 return BlockFace.WEST;
101
102 case 0x5:
103 default:
104 return BlockFace.EAST;
105 }
106 }
107
108 @Override
109 public Dispenser clone() {
110 return (Dispenser) super.clone();
111 }
112 }