From 59524fdb8045b51f4f059a91113ea4a1cf6a132a Mon Sep 17 00:00:00 2001 From: Bukkit/Spigot <noreply+git-bukkit@papermc.io> Date: Sat, 15 Jan 2011 20:58:34 +0000 Subject: [PATCH] Added Button MaterialData By: Dinnerbone <dinnerbone@dinnerbone.com> --- .../src/main/java/org/bukkit/Material.java | 2 +- .../main/java/org/bukkit/material/Button.java | 58 +++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 paper-api/src/main/java/org/bukkit/material/Button.java diff --git a/paper-api/src/main/java/org/bukkit/Material.java b/paper-api/src/main/java/org/bukkit/Material.java index f15acb4073..83d096e4c9 100644 --- a/paper-api/src/main/java/org/bukkit/Material.java +++ b/paper-api/src/main/java/org/bukkit/Material.java @@ -79,7 +79,7 @@ public enum Material { GLOWING_REDSTONE_ORE(74), REDSTONE_TORCH_OFF(75, RedstoneTorch.class), REDSTONE_TORCH_ON(76, RedstoneTorch.class), - STONE_BUTTON(77), + STONE_BUTTON(77, Button.class), SNOW(78), ICE(79), SNOW_BLOCK(80), diff --git a/paper-api/src/main/java/org/bukkit/material/Button.java b/paper-api/src/main/java/org/bukkit/material/Button.java new file mode 100644 index 0000000000..75b4d3dad1 --- /dev/null +++ b/paper-api/src/main/java/org/bukkit/material/Button.java @@ -0,0 +1,58 @@ + +package org.bukkit.material; + +import org.bukkit.BlockFace; +import org.bukkit.Material; + +/** + * Represents a button + */ +public class Button extends MaterialData implements Redstone, Attachable { + public Button(final int type) { + super(type); + } + + public Button(final Material type) { + super(type); + } + + public Button(final int type, final byte data) { + super(type, data); + } + + public Button(final Material type, final byte data) { + super(type, data); + } + + /** + * Gets the current state of this Material, indicating if it's powered or + * unpowered + * + * @return true if powered, otherwise false + */ + public boolean isPowered() { + return (getData() & 0x8) == 0x8; + } + + /** + * Gets the face that this block is attached on + * + * @return BlockFace attached to + */ + public BlockFace getAttachedFace() { + byte data = (byte) (getData() ^ 0x8); + + switch (data) { + case 0x1: + return BlockFace.NORTH; + case 0x2: + return BlockFace.SOUTH; + case 0x3: + return BlockFace.EAST; + case 0x4: + return BlockFace.WEST; + } + + return null; + } +}