Search in sources :

Example 1 with Lever

use of org.bukkit.material.Lever in project Glowstone by GlowstoneMC.

the class BlockLever method blockInteract.

@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;
}
Also used : Lever(org.bukkit.material.Lever) GlowBlockState(net.glowstone.block.GlowBlockState) MaterialData(org.bukkit.material.MaterialData)

Example 2 with Lever

use of org.bukkit.material.Lever in project Glowstone by GlowstoneMC.

the class BlockLever method extraUpdate.

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.getTypeId());
            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);
            }
        }
    }
}
Also used : GlowBlock(net.glowstone.block.GlowBlock) Lever(org.bukkit.material.Lever) ItemTable(net.glowstone.block.ItemTable) BlockFace(org.bukkit.block.BlockFace)

Example 3 with Lever

use of org.bukkit.material.Lever in project Glowstone by GlowstoneMC.

the class BlockLever method placeBlock.

@Override
public void placeBlock(GlowPlayer player, GlowBlockState state, BlockFace face, ItemStack holding, Vector clickedLoc) {
    super.placeBlock(player, state, face, holding, clickedLoc);
    MaterialData data = state.getData();
    if (!(data instanceof Lever)) {
        warnMaterialData(Lever.class, data);
        return;
    }
    Lever lever = (Lever) data;
    setAttachedFace(state, face.getOppositeFace());
    lever.setFacingDirection(face == BlockFace.UP || face == BlockFace.DOWN ? player.getDirection() : face);
}
Also used : Lever(org.bukkit.material.Lever) MaterialData(org.bukkit.material.MaterialData)

Example 4 with Lever

use of org.bukkit.material.Lever in project BKCommonLib by bergerhealer.

the class BlockUtil method setLever.

/**
     * 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);
    }
}
Also used : Lever(org.bukkit.material.Lever) BlockRedstoneEvent(org.bukkit.event.block.BlockRedstoneEvent)

Aggregations

Lever (org.bukkit.material.Lever)4 MaterialData (org.bukkit.material.MaterialData)2 GlowBlock (net.glowstone.block.GlowBlock)1 GlowBlockState (net.glowstone.block.GlowBlockState)1 ItemTable (net.glowstone.block.ItemTable)1 BlockFace (org.bukkit.block.BlockFace)1 BlockRedstoneEvent (org.bukkit.event.block.BlockRedstoneEvent)1