@Override public String toString() { return super.toString() + " facing " + getFacing() + " with " + getDelay() + " ticks delay"; }
@Override public void updatePhysicsAfterEvent(GlowBlock me) { super.updatePhysicsAfterEvent(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); } }
@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); } }
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.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); } } } }
if (((Diode) target.getState().getData()).getFacing() == target.getFace(this)) { return true;
case DIODE_BLOCK_ON: Diode diode = (Diode) target.getState().getData(); if (face == diode.getFacing().getOppositeFace()) { setFullyPowered(me); return; GlowBlock target2 = target.getRelative(face2); if (target2.getType() == Material.DIODE_BLOCK_ON && ((Diode) target2.getState().getData()).getFacing() == target2 .getFace(target)) { setFullyPowered(me);
@Override public String toString() { return super.toString() + " facing " + getFacing() + " with " + getDelay() + " ticks delay"; }