001 package org.bukkit.material; 002 003 import org.bukkit.block.BlockFace; 004 import org.bukkit.Material; 005 006 /** 007 * Represents a button 008 */ 009 public class Button extends SimpleAttachableMaterialData implements Redstone { 010 public Button() { 011 super(Material.STONE_BUTTON); 012 } 013 014 /** 015 * 016 * @deprecated Magic value 017 */ 018 @Deprecated 019 public Button(final int type) { 020 super(type); 021 } 022 023 public Button(final Material type) { 024 super(type); 025 } 026 027 /** 028 * 029 * @deprecated Magic value 030 */ 031 @Deprecated 032 public Button(final int type, final byte data) { 033 super(type, data); 034 } 035 036 /** 037 * 038 * @deprecated Magic value 039 */ 040 @Deprecated 041 public Button(final Material type, final byte data) { 042 super(type, data); 043 } 044 045 /** 046 * Gets the current state of this Material, indicating if it's powered or 047 * unpowered 048 * 049 * @return true if powered, otherwise false 050 */ 051 public boolean isPowered() { 052 return (getData() & 0x8) == 0x8; 053 } 054 055 /** 056 * Sets the current state of this button 057 * 058 * @param bool 059 * whether or not the button is powered 060 */ 061 public void setPowered(boolean bool) { 062 setData((byte) (bool ? (getData() | 0x8) : (getData() & ~0x8))); 063 } 064 065 /** 066 * Gets the face that this block is attached on 067 * 068 * @return BlockFace attached to 069 */ 070 public BlockFace getAttachedFace() { 071 byte data = (byte) (getData() & 0x7); 072 073 switch (data) { 074 case 0x1: 075 return BlockFace.WEST; 076 077 case 0x2: 078 return BlockFace.EAST; 079 080 case 0x3: 081 return BlockFace.NORTH; 082 083 case 0x4: 084 return BlockFace.SOUTH; 085 } 086 087 return null; 088 } 089 090 /** 091 * Sets the direction this button is pointing toward 092 */ 093 public void setFacingDirection(BlockFace face) { 094 byte data = (byte) (getData() & 0x8); 095 096 switch (face) { 097 case EAST: 098 data |= 0x1; 099 break; 100 101 case WEST: 102 data |= 0x2; 103 break; 104 105 case SOUTH: 106 data |= 0x3; 107 break; 108 109 case NORTH: 110 data |= 0x4; 111 break; 112 } 113 114 setData(data); 115 } 116 117 @Override 118 public String toString() { 119 return super.toString() + " " + (isPowered() ? "" : "NOT ") + "POWERED"; 120 } 121 122 @Override 123 public Button clone() { 124 return (Button) super.clone(); 125 } 126 }