
If you use BlockFace in any way, to compensate the directionals being incorrect, you can still have backwards compatibility if you add in the handling in your plugin: boolean legacyBlockFace = BlockFace.NORTH().getModX() == -1; (and then handle it accordingly) If you didn't special case your directions to fix what's being fixed here... Hurray! Your plugin should now work.
115 lines
2.5 KiB
Java
115 lines
2.5 KiB
Java
package org.bukkit.material;
|
|
|
|
import org.bukkit.Material;
|
|
import org.bukkit.block.BlockFace;
|
|
|
|
/**
|
|
* Represents the tripwire hook
|
|
*/
|
|
public class TripwireHook extends SimpleAttachableMaterialData implements Redstone {
|
|
|
|
public TripwireHook() {
|
|
super(Material.TRIPWIRE_HOOK);
|
|
}
|
|
|
|
public TripwireHook(final int type) {
|
|
super(type);
|
|
}
|
|
|
|
public TripwireHook(final int type, final byte data) {
|
|
super(type, data);
|
|
}
|
|
|
|
public TripwireHook(BlockFace dir) {
|
|
this();
|
|
setFacingDirection(dir);
|
|
}
|
|
|
|
/**
|
|
* Test if tripwire is connected
|
|
* @return true if connected, false if not
|
|
*/
|
|
public boolean isConnected() {
|
|
return (getData() & 0x4) != 0;
|
|
}
|
|
|
|
/**
|
|
* Set tripwire connection state
|
|
* @param connected - true if connected, false if not
|
|
*/
|
|
public void setConnected(boolean connected) {
|
|
int dat = getData() & (0x8 | 0x3);
|
|
if (connected) {
|
|
dat |= 0x4;
|
|
}
|
|
setData((byte) dat);
|
|
}
|
|
|
|
/**
|
|
* Test if hook is currently activated
|
|
* @return true if activated, false if not
|
|
*/
|
|
public boolean isActivated() {
|
|
return (getData() & 0x8) != 0;
|
|
}
|
|
|
|
/**
|
|
* Set hook activated state
|
|
* @param act - true if activated, false if not
|
|
*/
|
|
public void setActivated(boolean act) {
|
|
int dat = getData() & (0x4 | 0x3);
|
|
if (act) {
|
|
dat |= 0x8;
|
|
}
|
|
setData((byte) dat);
|
|
}
|
|
|
|
public void setFacingDirection(BlockFace face) {
|
|
int dat = getData() & 0xC;
|
|
switch (face) {
|
|
case WEST:
|
|
dat |= 0x1;
|
|
break;
|
|
case NORTH:
|
|
dat |= 0x2;
|
|
break;
|
|
case EAST:
|
|
dat |= 0x3;
|
|
break;
|
|
case SOUTH:
|
|
default:
|
|
break;
|
|
}
|
|
setData((byte) dat);
|
|
}
|
|
|
|
public BlockFace getAttachedFace() {
|
|
switch (getData() & 0x3) {
|
|
case 0:
|
|
return BlockFace.NORTH;
|
|
case 1:
|
|
return BlockFace.EAST;
|
|
case 2:
|
|
return BlockFace.SOUTH;
|
|
case 3:
|
|
return BlockFace.WEST;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public boolean isPowered() {
|
|
return isActivated();
|
|
}
|
|
|
|
@Override
|
|
public TripwireHook clone() {
|
|
return (TripwireHook) super.clone();
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return super.toString() + " facing " + getFacing() + (isActivated()?" Activated":"") + (isConnected()?" Connected":"");
|
|
}
|
|
}
|