public void onBlockFromTo(BlockFromToEvent e) {
		if (e.isCancelled()) return;
		CBlock conBlock = parent.getControllerBlockFor(null, e.getToBlock().getLocation(), null, true);
		if (conBlock == null) return;
		if (conBlock.isBeingEdited()) {
			// Scheduled event should normally do this for us
			if (!parent.blockPhysicsEditCheck) return;
			Player player = getPlayerEditing(conBlock);
			parent.log.debug("Block at " + Util.formatLocation(e.getToBlock().getLocation()) + " was drowned while editing and removed from a controller");
			conBlock.delBlock(e.getToBlock());
			player.sendMessage("Removing block due to change while editing " + Util.formatBlockCount(conBlock));
		} else {
			BlockProtectMode protect = (BlockProtectMode)parent.getConfig().getOpt(Option.BlockFlowProtectMode);
			if (protect.equals(BlockProtectMode.protect)) {
				e.setCancelled(true);
			} else if (protect.equals(BlockProtectMode.remove)) {
				conBlock.delBlock(e.getBlock());
			}
		}
	}