下面列出了怎么用org.bukkit.material.Door的API类实例代码及写法,或者点击链接到github查看源代码。
private void handleDoor(BlockTransformEvent event, Door door) {
BlockFace relative = door.isTopHalf() ? BlockFace.DOWN : BlockFace.UP;
BlockState oldState = event.getOldState().getBlock().getRelative(relative).getState();
BlockState newState = event.getBlock().getRelative(relative).getState();
BlockTransformEvent toCall;
if (event instanceof ParticipantBlockTransformEvent) {
toCall =
new ParticipantBlockTransformEvent(
event, oldState, newState, ((ParticipantBlockTransformEvent) event).getPlayerState());
} else if (event instanceof PlayerBlockTransformEvent) {
toCall =
new PlayerBlockTransformEvent(
event, oldState, newState, ((PlayerBlockTransformEvent) event).getPlayerState());
} else {
toCall = new BlockTransformEvent(event, oldState, newState);
}
callEvent(toCall, true);
}
@Override
public void onEvent(InventoryClickEvent event) {
super.onEvent(event);
if (!(event.getClickedInventory() instanceof PlayerInventory) || event.getCursor() == null)
return;
ItemStack item = event.getCursor();
if (BAD_TYPES.contains(item.getType()) || item.getData() instanceof Door) {
event.setCancelled(true);
}
}
private void callEvent(final BlockTransformEvent event, boolean checked) {
if (!checked) {
MaterialData oldData = event.getOldState().getMaterialData();
MaterialData newData = event.getNewState().getMaterialData();
if (oldData instanceof Door) {
handleDoor(event, (Door) oldData);
}
if (newData instanceof Door) {
handleDoor(event, (Door) newData);
}
}
logger.fine("Generated event " + event);
currentEvents.put(event.getCause(), event);
}
public void toggleDoor(Block b) {
BlockState state = b.getState();
if (state instanceof Door) {
Door op = (Door) state.getData();
if (!op.isOpen())
op.setOpen(true);
else
op.setOpen(false);
state.setData(op);
state.update();
}
}
public void toggleDoor(Block b) {
BlockState state = b.getState();
if (state instanceof Door) {
Door op = (Door) state.getData();
op.setOpen(!op.isOpen());
state.setData(op);
state.update();
}
}
public void toggleDoor(Block b) {
BlockState state = b.getState();
if (state instanceof Door) {
Door op = (Door) state.getData();
if (!op.isOpen())
op.setOpen(true);
else
op.setOpen(false);
state.setData(op);
state.update();
}
}