@Override public boolean blockInteract(GlowPlayer player, GlowBlock block, BlockFace face, Vector clickedLoc) { GlowBlockState state = block.getState(); MaterialData data = state.getData(); if (!(data instanceof Lever)) { warnMaterialData(Lever.class, data); return false; } Lever lever = (Lever) data; lever.setPowered(!lever.isPowered()); block.getWorld().playSound(block.getLocation(), Sound.BLOCK_LEVER_CLICK, 0.3F, lever.isPowered() ? 0.6F : 0.5F); state.update(); extraUpdate(block); return true; }
byte data = (byte) (getData() & 0x8); BlockFace attach = getAttachedFace(); setData(data);
final Lever lever = new Lever(Material.LEVER, block.getData()); lever.setPowered(!lever.isPowered()); block.setData(lever.getData()); final Block supportBlock = block.getRelative(lever.getAttachedFace()); if (supportBlock != null && supportBlock.getType() != Material.AIR) { final BlockState initialSupportState = supportBlock.getState();
if (getType() == Material.LEVER && ((Lever) getState().getData()).isPowered()) { return true; case LEVER: Lever lever = (Lever) target.getState().getData(); if (lever.isPowered() && lever.getAttachedFace() == target.getFace(this)) { return true;
lever.setPowered(leverOn); DepreciationAggregator.setData_Block(targetBlock, DepreciationAggregator.getData_MaterialData(lever)); targetBlock.getState().update();
/** * 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; }
private void extraUpdate(GlowBlock block) { Lever lever = (Lever) block.getState().getData(); ItemTable itemTable = ItemTable.instance(); GlowBlock target = block.getRelative(lever.getAttachedFace()); if (target.getType().isSolid()) { for (BlockFace face2 : ADJACENT) { GlowBlock target2 = target.getRelative(face2); BlockType notifyType = itemTable.getBlock(target2.getType()); if (notifyType != null) { if (target2.getFace(block) == null) { notifyType .onNearBlockChanged(target2, BlockFace.SELF, block, block.getType(), block.getData(), block.getType(), block.getData()); } notifyType.onRedstoneUpdate(target2); } } } } }
builder.fillWithRandomMaterial(new Vector(8, 1, 8), new Vector(8, 1, 10), random, stones); builder.fill(new Vector(8, 2, 11), new Vector(10, 2, 11), Material.SMOOTH_BRICK, 3); Lever lever = new Lever(Material.LEVER, (byte) 4); // workaround for bukkit, can't set an attached BlockFace lever.setFacingDirection(getRelativeFacing(BlockFace.SOUTH)); builder.fill(new Vector(8, 2, 12), new Vector(10, 2, 12), lever.getItemType(), lever); if (!placedTrap1) { placedTrap1 = builder
public static org.bukkit.material.Lever makeLeverWithData(byte data) { return new org.bukkit.material.Lever(Material.LEVER, data); }
case LEVER: Lever lever = (Lever) target.getState().getData(); if (lever.isPowered()) { setFullyPowered(me); return; if (lever2.isPowered() && lever2.getAttachedFace() == target2 .getFace(target)) { setFullyPowered(me);
/** * Sets the toggled state of a single lever<br> * <b>No Lever type check is performed</b> * * @param lever block * @param down state to set to */ public static void setLever(org.bukkit.block.Block lever, boolean down) { int data = getRawData(lever); Lever newMaterialData = (Lever) getData(Material.LEVER, data); newMaterialData.setPowered(down); if (getRawData(newMaterialData) != data) { // CraftBukkit start - Redstone event for lever int old = !down ? 1 : 0; int current = down ? 1 : 0; BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(lever, old, current); CommonUtil.callEvent(eventRedstone); if ((eventRedstone.getNewCurrent() > 0) != down) { return; } // CraftBukkit end setData(lever, newMaterialData, true); applyPhysics(getAttachedBlock(lever), Material.LEVER); } }
/** * Gets the face that this block is attached on * * @return BlockFace attached to */ public BlockFace getAttachedFace() { byte data = (byte) (getData() & 0x7); switch (data) { case 0x1: return BlockFace.WEST; case 0x2: return BlockFace.EAST; case 0x3: return BlockFace.NORTH; case 0x4: return BlockFace.SOUTH; case 0x5: case 0x6: return BlockFace.DOWN; case 0x0: case 0x7: return BlockFace.UP; } return null; }
Lever powerData = (Lever)data; registerForUndo(block); powerData.setPowered(!powerData.isPowered()); powerBlock = true; } else if (data instanceof PistonBaseMaterial) {
byte data = (byte) (getData() & 0x8); BlockFace attach = getAttachedFace(); setData(data);
BlockState supportState = theBlock.getState(); BlockState initalState = theBlock.getState(); attach.setPowered(this.breakedBlockPower.get(block)); theBlock.getState().setData(attach);
/** * 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; }