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