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;
}
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);
}
}
}
}
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);
}
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);
}
}
Aggregations