Search in sources :

Example 1 with Diode

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

the class BlockRedstoneRepeater 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 Diode) {
        ((Diode) data).setFacingDirection(player.getDirection());
        state.setData(data);
    } else {
        warnMaterialData(Diode.class, data);
    }
    state.getWorld().requestPulse(state.getBlock());
}
Also used : Diode(org.bukkit.material.Diode) MaterialData(org.bukkit.material.MaterialData)

Example 2 with Diode

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

the class BlockRedstoneRepeater method receivePulse.

@Override
public void receivePulse(GlowBlock block) {
    Diode diode = (Diode) block.getState().getData();
    GlowBlock target = block.getRelative(diode.getFacing().getOppositeFace());
    boolean powered = target.getType() == Material.REDSTONE_TORCH_ON || target.isBlockPowered() || target.getType() == Material.REDSTONE_WIRE && target.getData() > 0 && BlockRedstone.calculateConnections(target).contains(diode.getFacing()) || target.getType() == Material.DIODE_BLOCK_ON && ((Diode) target.getState().getData()).getFacing() == diode.getFacing();
    if (!powered && block.getType() == Material.DIODE_BLOCK_ON) {
        block.setTypeIdAndData(Material.DIODE_BLOCK_OFF.getId(), block.getData(), true);
        extraUpdate(block);
    } else if (powered && block.getType() == Material.DIODE_BLOCK_OFF) {
        block.setTypeIdAndData(Material.DIODE_BLOCK_ON.getId(), block.getData(), true);
        extraUpdate(block);
    }
}
Also used : GlowBlock(net.glowstone.block.GlowBlock) Diode(org.bukkit.material.Diode)

Example 3 with Diode

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

the class BlockRedstoneRepeater method blockInteract.

@Override
public boolean blockInteract(GlowPlayer player, GlowBlock block, BlockFace face, Vector clickedLoc) {
    Diode diode = (Diode) block.getState().getData();
    diode.setDelay(diode.getDelay() == 4 ? 1 : diode.getDelay() + 1);
    block.setData(diode.getData());
    return true;
}
Also used : Diode(org.bukkit.material.Diode)

Example 4 with Diode

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

the class BlockRedstoneRepeater method extraUpdate.

private void extraUpdate(GlowBlock block) {
    Diode diode = (Diode) block.getState().getData();
    ItemTable itemTable = ItemTable.instance();
    GlowBlock target = block.getRelative(diode.getFacing());
    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) Diode(org.bukkit.material.Diode) ItemTable(net.glowstone.block.ItemTable) BlockFace(org.bukkit.block.BlockFace)

Example 5 with Diode

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

the class BlockRedstoneRepeater method updatePhysics.

@Override
public void updatePhysics(GlowBlock me) {
    super.updatePhysics(me);
    Diode diode = (Diode) me.getState().getData();
    GlowBlock target = me.getRelative(diode.getFacing().getOppositeFace());
    boolean powered = target.getType() == Material.REDSTONE_TORCH_ON || target.isBlockPowered() || target.getType() == Material.REDSTONE_WIRE && target.getData() > 0 && BlockRedstone.calculateConnections(target).contains(diode.getFacing()) || target.getType() == Material.DIODE_BLOCK_ON && ((Diode) target.getState().getData()).getFacing() == diode.getFacing();
    if (powered != (me.getType() == Material.DIODE_BLOCK_ON)) {
        me.getWorld().requestPulse(me);
    }
}
Also used : GlowBlock(net.glowstone.block.GlowBlock) Diode(org.bukkit.material.Diode)

Aggregations

Diode (org.bukkit.material.Diode)5 GlowBlock (net.glowstone.block.GlowBlock)3 ItemTable (net.glowstone.block.ItemTable)1 BlockFace (org.bukkit.block.BlockFace)1 MaterialData (org.bukkit.material.MaterialData)1