下面列出了怎么用org.bukkit.block.data.Openable的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
protected void execute(final Event e) {
if (!flattening) {
executeLegacy(e);
return;
}
// 1.13 and newer: use BlockData
for (Block b : blocks.getArray(e)) {
BlockData data = b.getBlockData();
if (toggle == -1) {
if (data instanceof Openable)
((Openable) data).setOpen(false);
else if (data instanceof Powerable)
((Powerable) data).setPowered(false);
} else if (toggle == 1) {
if (data instanceof Openable)
((Openable) data).setOpen(true);
else if (data instanceof Powerable)
((Powerable) data).setPowered(true);
} else {
if (data instanceof Openable) // open = NOT was open
((Openable) data).setOpen(!((Openable) data).isOpen());
else if (data instanceof Powerable) // power = NOT power
((Powerable) data).setPowered(!((Powerable) data).isPowered());
}
b.setBlockData(data);
}
}
@Override
public void openDoor(Block block) {
if (!(block.getBlockData() instanceof Openable)) {
throw new IllegalArgumentException("Block is not Openable");
}
Openable data = (Openable) block.getBlockData();
data.setOpen(true);
block.setBlockData(data);
}
@Override
public void closeDoor(Block block) {
if (!(block.getBlockData() instanceof Openable)) {
throw new IllegalArgumentException("Block is not Openable");
}
Openable data = (Openable) block.getBlockData();
data.setOpen(false);
block.setBlockData(data);
}
public void toggleDoor(Block b) {
if (b.getBlockData() instanceof Openable) {
Openable openable = (Openable) b.getBlockData();
openable.setOpen(!openable.isOpen());
b.setBlockData(openable);
}
}
public boolean isOpenable(Block b) {
return b.getBlockData() instanceof Openable;
}